Re: Spamassassin, fetchmail, exim, and system resource issues
On Fri, Feb 22, 2002 at 04:47:52AM -0800, Karsten M. Self wrote:
| on Thu, Feb 21, 2002, Alan Shutko (firstname.lastname@example.org) wrote:
| > "Karsten M. Self" <email@example.com> writes:
| > > When pulling mail, I'll see the system spike to 350 or more processes.
| > > It appears that each mail delivery initiates a separate exim process
| > > (which I hadn't expected) and procmail process (this I had).
| > I don't send fetchmail's output through exim, I just put this in
| > .fetchmailrc
| > defaults mda "/usr/bin/procmail -f %F"
| > which serializes mail delivery. So instead of hitting user limits, it
| > takes a while to go through morning mail... maybe I should try
| > spamd....
| spamc/spamd is highly recommended.
| I think the problem is exim's handling moreso than the others,
I agree -- it sounds like exim is forking lots of processes (one for
each delivery) as it tries to deliver all the messages ASAP. As a
side effect, spamd forks that many times and takes a while to process
the mail. If the messages come in fast enough (faster than they are
delivered) then the number of processes will increase.
| so your suggesting may be sane. I trimmed my max messages accepted
| from ~100 to ~50. I've got exim running queue every five minutes,
| which I think I'll cut to something like 2-3:
| /etc/exim/exim.conf: smtp_accept_queue_per_connection = 50
| ...and the appropriate mod in /etc/init.d/exim.
| If I understand properly, this should cause exim to attempt fewer
| simultaneous delivers, and spread deliveries out over several minutes.
Looking at the spec just now, I think this is the option you want to
tweak. Another option that you may want to try is :
queue_only_load Type: fixed-point Default: unset
If the system load average is higher than this value, all incoming
messages are queued, and no automatic deliveries are started. If this
happens during local or remote SMTP input, all subsequent messages on the
same connection are queued. Deliveries will subsequently be performed by
queue running processes, unless the load is higher than
"deliver_load_max". There are some operating systems for which Exim cannot
determine the load average (see chapter 1); for these this option has no
effect. See also "smtp_accept_queue" and "smtp_load_reserve".
For when quality, reliability
and security just aren't