Hello,

Running CyrusIMAP 2.2.8 on Debian Sarge, with a  2 frontends & 3 backends murder, in operational situation. (5000 dayly users, will climb up to 70000 at the end of the year, with an average of 4 mails of 50ko per user/days)

The problem :  mupdate chokes in a strange way when frontends receive few hundreds of mails (mailing lists for example), and 300 messages take at least 1 hour 1/2 to get deliverred.

My question : what parameters to configure in order to have mupdate answering quickly to frontends under charge? What to listen at, how to get precisely tuned?

If more details needed for a precise diagnostic, please tell me.

IN DETAILS :

When frontends receive hundreds of mails, (eg 300 shared by 2 frontends), approximatively 40 of them go instantly through postfix to the mailbox, and then the  mailq grows up, with  mainly  "cyrus/socket/lmtp timeout", and few "mupdate unreachable" and in mail.info :
"connect to cyrus/socket/lmtp read timeout".


By this time mupdate says :
21:34:24 accepted connection
21:34:24 login: frontend01 [128.999.99.99] cyrus DIGEST-MD5 User logged in
21:34:24 cmd_find (fd: 26, user/mail.box)  
from fd: 26 to fd: 137, and then
21:35:12 accepted connection
21:35:12 "Server too busy, droping connection"
>From this point, after
  "New worker thread started..."
  "Worker thread finished ..."
with 250 of these messages within 1second, memory and cpu use climbing by 10% at this time, still 90% of free resources.
The next second, log says :
  "Server too busy, droping connection"
It lasts 30 or 40 second and then mupdate restarts answering "cmd_find" requests from the frondend, exactly 1 each 10 seconds (peacefull fro resources), for 1 minut or so, and then falls again into 
"Server too busy, droping connection"

... and so on, alternatively slow activity or unproductive hyperactivity of threads until frontends mailq's are empty.


My confs:
FRONTEND SERVER
postfix main.cf:
initial_destination_concurrency = 200
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
lmtp_destination_concurrency_limit = 200

cyrus.conf
mupdate cmd="mupdate" listen=3905 prefork=1
lmtp cmd="lmtpproxyd" listen="/var/run/cyrus/socket/lmtp" prefork=5 maxchild=50

imapd.conf
allowusermoves: yes
allowallsubscribe: 1
lmtp_downcase_rcpt: true
proxyservers: cyrus
mupdate_server: mymupdate
mupdate_port: 3905
mupdate_username:  cyrus
mupdate_authname: cyrus
mupdate_password:  password!
#mupdate_retry_delay
#mupdate_workers_start
#mupdate_workers_minspare

MUPDATE SERVER
cyrus.conf
mupdate cmd="mupdate -m" listen=3905 prefork=1 maxchild=100


imapd.conf
lmtp_downcase_rcpt: true
proxyservers: cyrus
proxy_authname: cyrus
proxy_password: password!
#mupdate_retry_delay
#mupdate_workers_start
#mupdate_workers_minspare
Thank you for help.

--- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to