Slow lmtpd
John Capo
jc at irbs.com
Fri Mar 2 19:58:40 EST 2007
Quoting Andre Nathan (andre at digirati.com.br):
> On Thu, 2007-03-01 at 09:25 +0100, lst_hoe01 at kwsoft.de wrote:
> > A few thousand lmtpd would be *way* too much because they all use the
> > same I/O bottleneck (if you don't have partitions on different I/O
> > paths). For a single I/O path i would recommend not more than some 10
> > .. 20 concurrent lmtpd with the exception if you are having complex
> > sieve rules which adds to latency.
>
> Huh, sorry... read hundreds where I wrote thousands... during peak times
> there 200-250 lmtpd processes. Anyway, it's still too much.
>
> The partitions are mounted remotely using ATA over Ethernet, with jumbo
> frames enabled. It's an 8-disk RAID-5 array. I'm not sure if the network
> can be the bottleneck. The snmp statistics don't show full utilization
> of the gigabit link.
>
> I can lower the maximum number of lmtpd processes, but the problem is
> that given the number of connections made to lmtpd from the MTAs, it'll
> quickly reach that number and start bouncing messages.
Postfix should not bounce if it can't connect to a LMTP server.
Queue and retry would be normal when a conenction to an LMTPor SMTP
server fails.
I would limit the LMTP concurrency to Cyrus either with a transport
entry in master.cf or with the lmtp_destination_concurrency_limit
knob if you are running 2.3 and later. Transports will let you
tune per destination.
Other 2.3.X knobs that you should look at.
lmtp_connection_cache_destinations = your Cyrus server names
lmtp_connection_cache_time_limit = 60s or something more than the 2s default
connection_cache_ttl_limit = 60s same as above or larger
If contention for locks is the problem, reducing the concurrecny
will surely help. Keeping the LMTP conenctions open with connection
caching saves the setup/teardown time for a delivery on both ends.
John Capo
More information about the Info-cyrus
mailing list