[Mailman-Users] Memory usage climbs for 3rd and 4th outgoing qrunner process

Mark Sapiro mark at msapiro.net
Thu Aug 25 07:48:01 CEST 2011


On 8/24/2011 7:59 PM, Ivan Fetch wrote:
> 
> I've let things run, and although there is still some growth, the box has not hit 97% (of 2Gb) memory usage like it did once before. 


But the question is when the box is at 97% memory utilization, how much
of that memory is actually needed vs. inactive pages that are memory
resident simply because no other process actually needs the memory.


> # ps -Umailman -o pmem -o size -o args |sort -n
> %MEM    SZ COMMAND
>  0.2  7388 /usr/bin/python /mail/mailman/mailman/bin/mailmanctl start
>  0.4  7408 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=NewsRunner:0:1 -s
>  0.8 12740 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=ArchRunner:0:1 -s
>  1.3 23032 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=CommandRunner:0:1 -s
>  1.3 24872 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=RetryRunner:0:1 -s
>  2.4 48280 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=IncomingRunner:0:1 -s
>  2.6 50060 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=OutgoingRunner:0:4 -s
>  3.4 67028 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=OutgoingRunner:1:4 -s
>  3.6 70140 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=BounceRunner:0:1 -s
>  3.8 84208 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=VirginRunner:0:1 -s
>  6.6 133052 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=OutgoingRunner:2:4 -s
> 10.1 205020 /usr/bin/python /mail/mailman/mailman/bin/qrunner --runner=OutgoingRunner:3:4 -s
> 
> 
> You mentioned large messages causing similar behavior, but also impacting the incomingrunner. How would I tell whether that is the case?


A large message is queued for Mailman and the queue entry is at least as
large as the raw message. When the message is processed, each runner
that handles it winds up with the entire message in memory and thus must
grow large enough to hold the message.

What I was saying is that in a situation like that above, it would not
be the case that slices 2 or 3 of OutgoingRunner grew to 133 and 205 MB
respectively because of large messages because those messages would have
passed through IncomingRunner and it would have grown comparably large.

>> Also, you can add up all the sizes of the lists/*/config.pck files to
>> get a very rough idea of how much things may grow.
> 
> This came out to 32Mb, for 1360 lists.


The implication of this is that if you leave things long enough,
eventually all the runners will grow to > 32 MB. Four have already, one
is significantly larger which says that I don't really know how to
calculate/explain all the memory usage, but the aggregate size of all
the list objects is definitely a lower bound on how big the qrunners
will grow.

If you find that this is a real problem, you can try the patch at
<http://mail.python.org/pipermail/mailman-users/attachments/20100312/24957034/attachment.txt>
which removes the qrunner list cache. But, I don't think this is
actually necessary because even though they are large, most of the
memory will be swapped out for long periods if it is needed by other
processes.

-- 
Mark Sapiro <mark at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan



More information about the Mailman-Users mailing list