On Fri, 12 Mar 2010, Mark Sapiro wrote:
There is an issue that affects memory usage in the qrunners. They keep a cache of list objects in memory to reduce disk IO. The cache is supposed to free the space used by a list object when there are no more references to that object, but it turns out there is a self-reference in the list objects, so the cache simply grows until it holds a copy of each list.
There are other issues in that large messages can cause the runners that handle it to grow, and Python's memory management is such that Python itself never gives freed memory back to the OS. Memory can be freed within Python and it will be available for reuse within that process, but it is not given back to the OS.
I recommend disabling the list cache within the qrunners. This was done for the now defunct 2.2 branch, but has not been done on the 2.1 branch.
The attached Runner.patch.txt file contains a patch to do this. I suggest you try the patch and see if that helps.
Thanks for this.
I patched Mailman/Queue/Runner.py and the patch applied cleanly. I even checked that the patch had applied.
I stopped and restarted Mailman.
But Runner.pyc wasn't updated.
I deleted Runner.pyc in order to make sure that the old one wasn't being used, but 17 hours on, Runner.pyc hasn't been recreated.
The system seems to be running fine from what I've seen, but I'm curious to know if the file I'm patched is in fact being used at all.
Geoff.