On Mon, 10 Mar 2014, Marco wrote: > My server is: > Red Hat Enterprise Linux Server release 6.3 (Santiago) > Without problems I read something like this: > > total used free shared buffers cached > Mem: 8061976 7651020 410956 0 1355964 3412788 > -/+ buffers/cache: 2882268 5179708 > Swap: 4194296 32180 4162116 > > procs -----------memory---------- ---swap-- -----io---- --system-- > -----cpu----- > r b swpd free buff cache si so bi bo in cs us > sy id wa st > 2 0 32180 386880 1356476 3423712 0 0 643 327 25 18 > 10 4 81 5 0 Those numbers look okay. Obviously more memory is nice for caching disk I/O, but you're doing fine. > current cyrus.conf: > SERVICES { > # add or remove based on preferences > imap cmd="imapd" listen="imap" prefork=5 > pop3 cmd="pop3d" listen="pop3" prefork=3 > sieve cmd="timsieved" listen="sieve" prefork=0 > lmtp cmd="lmtpd -a" listen="lmtp" prefork=0 > } > > I have to prevent memory issue when some oddity forces clients to make > DOS on Cyrus. So I would like to configure the maxchild cyrus > parameter for imap. I would like to set this value to avoid memory > issue during normal work, having a known value of system RAM. Here is what I'm using on a Cyrus backend with 8GB of RAM: imap cmd="/usr/local/cyrus/bin/imapd" listen="imap" proto="tcp4" prefork=10 maxchild=4000 imaps cmd="/usr/local/cyrus/bin/imapd -s" listen="imaps" proto="tcp4" prefork=10 maxchild=1000 sieve cmd="/usr/local/cyrus/bin/timsieved" listen="sieve" proto="tcp4" prefork=0 maxchild=100 lmtp cmd="/usr/local/cyrus/bin/lmtpd" listen="lmtp" proto="tcp4" prefork=1 maxchild=100 I tuned the maxchild setting to balance our usage patterns between the imap and imaps ports. Our highest open connection count is about 1500 total, so there is quite a bit of headroom. > I see that an IMAPD process takes in average 22-25MB. With 8GB RAM, > the server would swap already with less than 400 conns; it not > happens, so this evaluation is wrong or too many conservative. I think > that I better consider differences between RSS and SHR memory to > tuning imapd processes number, but I'm not sure. > > Could you help me in this tuning? In particular I'm interested on > relation between memory usage and maxchild imapd processes. I'm running a Cyrus Murder cluster with separate frontends and backends, so my numbers won't directly correlate. On a backend with about 700 imapd processes, I have the following memory usage: total used free shared buffers cached Mem: 8200092 8136084 64008 0 2735124 1614016 -/+ buffers/cache: 3786944 4413148 Swap: 1951736 36544 1915192 > Meanwhile I would also tune the maxfds parameter. With lsof I measure > about 60 opened files by each imapd process. If I have 400 imapd > processes it means a 'ulimit -f' global system of 60*400=24000. This > is wrong, because I currently have a 4096 limit and I never had > problems. Maybe do I have to consider only 'Running' processes to > compute this treshold? My Cyrus init script does: # Crank up the limits ulimit -n 209702 ulimit -u 4096 ulimit -c 102400 This particular backend has: root@cyrus-be1:~# cat /proc/sys/fs/file-nr 25696 0 819000 Again, this is with about 700 imapd processes. Andy ---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus