[Mailman-Developers] Serious I/O contention issue

Brad Knowles brad.knowles at skynet.be
Tue Oct 14 18:14:53 EDT 2003


At 1:11 PM +0100 2003/10/14, Mike Bradley wrote:

>  I have a rather large mailing list (35000 members) which is used for
>  announcements only, but I have been experiencing terrible performance
>  problems when the qrunner is active.  The mail server is Postfix,
>  Mailman is version 2.1.3 (previous versions showed the same problems).

	Just checking, but have you seen the following FAQ entries?  See:

		<http://www.python.org/cgi-bin/faqw-mm.py?req=all#4.11>
		<http://www.python.org/cgi-bin/faqw-mm.py?req=all#4.12>
		<http://www.python.org/cgi-bin/faqw-mm.py?req=all#6.4>
		<http://www.python.org/cgi-bin/faqw-mm.py?req=all#6.6>

	I figure you probably have already seen them, but I wanted to be sure.

>  When I send an outgoing mail, the qrunner processes take up all my CPU
>  and the hard disk becomes inaccessible due to constant IO.  Even when
>  there is very little activity in the list and the queues are cleared,
>  the server locks up for several seconds every time an operation is
>  performed.

	What about the machine you're doing this on?  The filesystem? 
How is postfix configured?

	If you read Nick Christenson's book _Sendmail Performance 
Tuning_, please note that many of the criteria are also applicable to 
other MTAs.  See <http://www.jetcafe.org/~npc/book/sendmail/> for 
more info.  Disclaimer: Nick was my co-author for a talk I gave 
previously (see <http://www.shub-internet.org/brad/papers/dihses/>), 
and I was a technical reviewer of this book.


	Clearly, there may well be lots of opportunity here to tune your 
filesystem for maximum performance.

>  I am not familiar with the exact way the application operates, but are
>  the mlist arrays shared/marshalled across the qrunner processes via the
>  _listcache?  If so, then would it be possible to eliminate the
>  mlist.Load() in the OutgoingRunner and implement delayed saving in the
>  mailing list class so that Save() didn't cause a write to disk each
>  time?

	Depending on what your "SMTP_MAX_RCPTS" value is set to, I would 
imagine that this should be loaded and saved each time a message is 
passed from your mailman qrunner to postfix.  The higher 
SMTP_MAX_RCPTS, the less often this process should occur.  Of course, 
others have found that SMTP_MAX_RCPTS should typically be set 
somewhere between 2 and 10 (usually ~5) for best overall performance 
(see the FAQ entries above).

-- 
Brad Knowles, <brad.knowles at skynet.be>

"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."
     -Benjamin Franklin, Historical Review of Pennsylvania.

GCS/IT d+(-) s:+(++)>: a C++(+++)$ UMBSHI++++$ P+>++ L+ !E-(---) W+++(--) N+
!w--- O- M++ V PS++(+++) PE- Y+(++) PGP>+++ t+(+++) 5++(+++) X++(+++) R+(+++)
tv+(+++) b+(++++) DI+(++++) D+(++) G+(++++) e++>++++ h--- r---(+++)* z(+++)



More information about the Mailman-Developers mailing list