Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
The SASL is cyrus-sasl 2.1.26-9.5. I believe it does use /dev/urandom. I am not sure how to run strace on the process that the Master listener forks. Here is the strace run on the imapd process at a command prompt (which is not quite the same as the master listener forking it to a port where another process is waiting to connect to it). MAILSERVER:~ # strace /usr/lib/cyrus/bin/imapd -C /etc/imapd.domain1.com.conf execve("/usr/lib/cyrus/bin/imapd", ["/usr/lib/cyrus/bin/imapd", "-C", "/etc/imapd.domain1.com.conf"], [/* 56 vars */]) = 0 brk(0) = 0x5573deaf5000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb770c000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=80522, ...}) = 0 mmap(NULL, 80522, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fdeb76f8000 close(3)= 0 open("/usr/lib64/libsasl2.so.3", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300N\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=118552, ...}) = 0 mmap(NULL, 2213800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb72d mprotect(0x7fdeb72ec000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb74eb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fdeb74eb000 close(3)= 0 open("/usr/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200Y\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=855280, ...}) = 0 mmap(NULL, 2951008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6fff000 mprotect(0x7fdeb70c1000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb72c, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc1000) = 0x7fdeb72c close(3)= 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb76f7000 open("/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\26\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=14760, ...}) = 0 mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6dfb000 mprotect(0x7fdeb6dfe000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb6ffd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fdeb6ffd000 close(3)= 0 open("/lib64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pr\1\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0555, st_size=440632, ...}) = 0 mmap(NULL, 2535888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6b8f000 mprotect(0x7fdeb6bf, 2097152, PROT_NONE) = 0 mmap(0x7fdeb6df, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x61000) = 0x7fdeb6df close(3)= 0 open("/lib64/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\313\6\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0555, st_size=2447744, ...}) = 0 mmap(NULL, 4559184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6735000 mprotect(0x7fdeb6962000, 2097152, PROT_NONE) = 0 mmap(0x7fdeb6b62000, 167936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22d000) = 0x7fdeb6b62000 mmap(0x7fdeb6b8b000, 12624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdeb6b8b000 close(3)= 0 open("/usr/lib64/libdb-4.8.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@X\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1560248, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb76f6000 mmap(NULL, 3655304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb63b8000 mprotect(0x7fdeb653, 2097152, PROT_NONE) = 0 mmap(0x7fdeb673, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x178000) = 0x7fdeb673 close(3)= 0 open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P#\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=88216, ...}) = 0 mmap(NULL, 2183304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb61a2000 mprotect(0x7fdeb61b7000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb63b6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fdeb63b6000 close(3)= 0 open("/lib64/libwrap.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p8\0\0\0\0\0\0"..., 832) = 832 fstat(3, {s
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
you can use 'strace -p ', specifying the pid of process you want to trace. you will have to "catch" the process that blocks. it may not be easy, but I have no other suggestions. On Tuesday, May 23, 2017 06:19:17 PM Michael Hieb wrote: > The SASL is cyrus-sasl 2.1.26-9.5. I believe it does use /dev/urandom. > > I am not sure how to run strace on the process that the Master listener > forks. Here is the strace run on the imapd process at a command prompt > (which is not quite the same as the master listener forking it to a port > where another process is waiting to connect to it). > > MAILSERVER:~ # strace /usr/lib/cyrus/bin/imapd -C > /etc/imapd.domain1.com.conf > execve("/usr/lib/cyrus/bin/imapd", ["/usr/lib/cyrus/bin/imapd", "-C", > "/etc/imapd.domain1.com.conf"], [/* 56 vars */]) = 0 > brk(0) = 0x5573deaf5000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x7fdeb770c000 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=80522, ...}) = 0 > mmap(NULL, 80522, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fdeb76f8000 > close(3)= 0 > open("/usr/lib64/libsasl2.so.3", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300N\0\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=118552, ...}) = 0 > mmap(NULL, 2213800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7fdeb72d > mprotect(0x7fdeb72ec000, 2093056, PROT_NONE) = 0 > mmap(0x7fdeb74eb000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fdeb74eb000 > close(3)= 0 > open("/usr/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200Y\2\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=855280, ...}) = 0 > mmap(NULL, 2951008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7fdeb6fff000 > mprotect(0x7fdeb70c1000, 2093056, PROT_NONE) = 0 > mmap(0x7fdeb72c, 65536, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc1000) = 0x7fdeb72c > close(3)= 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x7fdeb76f7000 > open("/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\26\0\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=14760, ...}) = 0 > mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7fdeb6dfb000 > mprotect(0x7fdeb6dfe000, 2093056, PROT_NONE) = 0 > mmap(0x7fdeb6ffd000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fdeb6ffd000 > close(3)= 0 > open("/lib64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pr\1\0\0\0\0\0"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0555, st_size=440632, ...}) = 0 > mmap(NULL, 2535888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7fdeb6b8f000 > mprotect(0x7fdeb6bf, 2097152, PROT_NONE) = 0 > mmap(0x7fdeb6df, 45056, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x61000) = 0x7fdeb6df > close(3)= 0 > open("/lib64/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\313\6\0\0\0\0\0"..., > 832) = 832 > fstat(3, {st_mode=S_IFREG|0555, st_size=2447744, ...}) = 0 > mmap(NULL, 4559184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7fdeb6735000 > mprotect(0x7fdeb6962000, 2097152, PROT_NONE) = 0 > mmap(0x7fdeb6b62000, 167936, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22d000) = 0x7fdeb6b62000 > mmap(0x7fdeb6b8b000, 12624, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdeb6b8b000 > close(3)= 0 > open("/usr/lib64/libdb-4.8.so", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@X\2\0\0\0\0\0"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1560248, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x7fdeb76f6000 > mmap(NULL, 3655304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7fdeb63b8000 > mprotect(0x7fdeb653, 2097152, PROT_NONE) = 0 > mmap(0x7fdeb673, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x178000) = 0x7fdeb673 > close(3)= 0 > open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3 > read(3, > "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P#\0\0\0\0\0\0"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=88216, ...}) = 0 > mmap(NULL, 2183304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, > 0) = 0x7f
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
I have done something like this before, define the command in /etc/cyrus.conf as the strace command. Define it on a test IP so you are the only one hitting it. Something like: imap cmd="/usr/bin/strace -q -v -s200 -f -F -o /home/cyrus/pop3 /full/path/to/imapd -C /etc/imapd.domain4.com.conf " listen="192.168.110.175:imap" maxchild=-1 maxforkrate=100 Also just noticed that in your cyrus.conf file the SERVICES names are not unique. They all are named imap, imaps, sieve, or lmtp. Not sure about 2.4.18 but in the 3.0.1 man page it says "In the SERVICES section, names must be unique." Wouldn't hurt naming them different to see if that makes a difference. On 05/23/2017 11:38 AM, Michael Ulitskiy wrote: you can use 'strace -p ', specifying the pid of process you want to trace. you will have to "catch" the process that blocks. it may not be easy, but I have no other suggestions. On Tuesday, May 23, 2017 06:19:17 PM Michael Hieb wrote: The SASL is cyrus-sasl 2.1.26-9.5. I believe it does use /dev/urandom. I am not sure how to run strace on the process that the Master listener forks. Here is the strace run on the imapd process at a command prompt (which is not quite the same as the master listener forking it to a port where another process is waiting to connect to it). MAILSERVER:~ # strace /usr/lib/cyrus/bin/imapd -C /etc/imapd.domain1.com.conf execve("/usr/lib/cyrus/bin/imapd", ["/usr/lib/cyrus/bin/imapd", "-C", "/etc/imapd.domain1.com.conf"], [/* 56 vars */]) = 0 brk(0) = 0x5573deaf5000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb770c000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=80522, ...}) = 0 mmap(NULL, 80522, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fdeb76f8000 close(3)= 0 open("/usr/lib64/libsasl2.so.3", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300N\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=118552, ...}) = 0 mmap(NULL, 2213800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb72d mprotect(0x7fdeb72ec000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb74eb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fdeb74eb000 close(3)= 0 open("/usr/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200Y\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=855280, ...}) = 0 mmap(NULL, 2951008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6fff000 mprotect(0x7fdeb70c1000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb72c, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc1000) = 0x7fdeb72c close(3)= 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb76f7000 open("/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\26\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=14760, ...}) = 0 mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6dfb000 mprotect(0x7fdeb6dfe000, 2093056, PROT_NONE) = 0 mmap(0x7fdeb6ffd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fdeb6ffd000 close(3)= 0 open("/lib64/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pr\1\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0555, st_size=440632, ...}) = 0 mmap(NULL, 2535888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6b8f000 mprotect(0x7fdeb6bf, 2097152, PROT_NONE) = 0 mmap(0x7fdeb6df, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x61000) = 0x7fdeb6df close(3)= 0 open("/lib64/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\313\6\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0555, st_size=2447744, ...}) = 0 mmap(NULL, 4559184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdeb6735000 mprotect(0x7fdeb6962000, 2097152, PROT_NONE) = 0 mmap(0x7fdeb6b62000, 167936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22d000) = 0x7fdeb6b62000 mmap(0x7fdeb6b8b000, 12624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdeb6b8b000 close(3)= 0 open("/usr/lib64/libdb-4.8.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@X\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1560248, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb76f6000 mmap(NULL, 3655304, PROT_READ|PROT_EXEC, MAP_PRI
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
I may be completely missing the point and I don't know your environment. It looks like you may have designed in some delays if the server is pretty busy, especially during restart. On Fri, May 19, 2017 at 05:55:32PM +0800, Michael Hieb wrote: > > Here are the configuration details: > > > > imap cmd="imapd -C /etc/imapd.domain1.com.conf " > > listen="192.168.171.4:imap" maxchild=-1 maxforkrate=100 > > > > imaps cmd="imapd -C /etc/imapd.domain1.com.conf -s " > > listen="192.168.171.4:imaps" maxchild=-1 maxforkrate=100 maxforkrate will limit you to 100 forks per second. That's quite a lot but between bad guys and reconnects of clients after a restart, that may be limiting. I'm not sure I understand maxforkrate without a maxchild limit. That's probably a lack of imagination on my part. Maybe it would be good to prefork a few instances of each service? -- Scott LambertKC5MLE Unix SysAdmin lamb...@lambertfam.org 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
Re: BDB despite apparent lack of BDB databases
In partial answer to my original question, cyrusdb.c contains (in 2.4) struct cyrusdb_backend *cyrusdb_backends[] = { #ifdef HAVE_BDB &cyrusdb_berkeley, &cyrusdb_berkeley_nosync, &cyrusdb_berkeley_hash, &cyrusdb_berkeley_hash_nosync, #endif &cyrusdb_flat, &cyrusdb_skiplist, &cyrusdb_quotalegacy, #if defined HAVE_MYSQL || defined HAVE_PGSQL || defined HAVE_SQLITE &cyrusdb_sql, #endif NULL }; void cyrusdb_init() { int i, r; char dbdir[1024]; const char *confdir = libcyrus_config_getstring(CYRUSOPT_CONFIG_DIR); int initflags = libcyrus_config_getint(CYRUSOPT_DB_INIT_FLAGS); strcpy(dbdir, confdir); strcat(dbdir, FNAME_DBDIR); for(i=0; cyrusdb_backends[i]; i++) { r = (cyrusdb_backends[i])->init(dbdir, initflags); if(r) { syslog(LOG_ERR, "DBERROR: init() on %s", cyrusdb_backends[i]->name); } } } Since mine was compiled with BDB supported (presumably) the berkeley backends are there and cyrusdb_init() tries to initialize them even if none of my actual databasess are using a BDB format. I think my best move would be to find the initialization logic that creates the db directory and do that to create an emptyish directory (if tools/mkimap is a guide it looks as if I should create stage. and sync. underneath it). Ross 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
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
Michael Hieb wrote on 5/19/2017 4:48 AM: Apologies for long post, most of it is configuration details. ... # UNIX sockets start with a slash and are put into /var/lib/imap/socket SERVICES { # add or remove based on preferences #imap cmd="imapd" listen="imap" maxchild=-1 maxforkrate=100 imap cmd="imapd -C /etc/imapd.domain1.com.conf " listen="192.168.171.4:imap" maxchild=-1 maxforkrate=100 imap cmd="imapd -C /etc/imapd.domain1.com.conf " listen="192.168.110.171:imap" maxchild=-1 maxforkrate=100 imap cmd="imapd -C /etc/imapd.domain2.com.conf " listen="192.168.172.4:imap" maxchild=-1 maxforkrate=100 imap cmd="imapd -C /etc/imapd.domain2.com.conf " listen="192.168.110.172:imap" maxchild=-1 maxforkrate=100 imap cmd="imapd -C /etc/imapd.domain3.com.conf " listen="192.168.174.4:imap" maxchild=-1 maxforkrate=100 imap cmd="imapd -C /etc/imapd.domain3.com.conf " listen="192.168.110.174:imap" maxchild=-1 maxforkrate=100 ... Michael, each process in Cyrus needs a unique name. Try: imap1 cmd="imapd -C /etc/imapd.domain1.com.conf " listen="192.168.171.4:imap" maxchild=-1 maxforkrate=100 imap2 cmd="imapd -C /etc/imapd.domain1.com.conf " listen="192.168.110.171:imap" maxchild=-1 maxforkrate=100 imap3 cmd="imapd -C /etc/imapd.domain2.com.conf " listen="192.168.172.4:imap" maxchild=-1 maxforkrate=100 imap4 cmd="imapd -C /etc/imapd.domain2.com.conf " listen="192.168.110.172:imap" maxchild=-1 maxforkrate=100 imap5 cmd="imapd -C /etc/imapd.domain3.com.conf " listen="192.168.174.4:imap" maxchild=-1 maxforkrate=100 imap6 cmd="imapd -C /etc/imapd.domain3.com.conf " listen="192.168.110.174:imap" maxchild=-1 maxforkrate=100 imaps1 imaps2 imaps3 sieve1 sieve2 lmtp1 lmtp2 ... --Blake 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
Re: lmtpd segfaults after update to 2.4.19, seems it wants to act as proxy
On Mon, May 22, 2017, at 03:55 PM, Simon Matter wrote: > Hi Ellie, > > Thanks for looking into it. > > Unfortunately with your new version of the patch I only get this: > > lmtpunix[23046]: FATAL: Internal error: assertion failed: append.c: 368: > stage != NULL && stage->parts[0] != '\0' > > Regards, > Simon > That's annoying :( Reproducible, I assume? If you add a call to "abort();" from early in "void fatal(const char* s, int code)" in imap/lmtpd.c and rebuild/reinstall, then when that assertion fires it should dump a core file. Can you get a backtrace from that please? Note that this will bypass the usual clean-shutdown that usually occurs on fatal errors, and might lead to database corruptions and such. So probably don't do this on an important server. Cheers, ellie 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
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
I have had good success connecting to the right process and can replicate the result. Here is what I found; MAILSERVER:~ # ps auwwx|grep imapd cyrus 1738 0.0 0.0 119572 10140 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf -s cyrus 1745 0.0 0.0 119580 9812 ?S03:32 0:00 imapd -C /etc/imapd.domain2.com.conf -s cyrus 1749 0.0 0.0 119596 9856 ?S03:32 0:00 imapd -C /etc/imapd.domain3.com.conf cyrus 1750 0.0 0.0 129424 11500 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1751 0.0 0.0 119696 9988 ?S03:32 0:00 imapd -C /etc/imapd.domain5.com.conf cyrus 1752 0.0 0.0 119596 9816 ?S03:32 0:00 imapd -C /etc/imapd.domain4.com.conf cyrus 1753 0.0 0.0 119604 9964 ?S03:32 0:00 imapd -C /etc/imapd.domain3.com.conf cyrus 1754 0.0 0.0 119596 9652 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1755 0.0 0.0 119596 9800 ?S03:32 0:00 imapd -C /etc/imapd.domain5.com.conf cyrus 1756 0.0 0.0 119604 10056 ?S03:32 0:00 imapd -C /etc/imapd.domain4.com.conf cyrus 1757 0.0 0.0 129564 11724 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1758 0.0 0.0 119512 9896 ?S03:33 0:00 imapd -C /etc/imapd.domain1.com.conf -s cyrus 1766 0.0 0.0 119588 9904 ?S03:33 0:00 imapd -C /etc/imapd.domain3.com.conf -s cyrus 1767 0.0 0.0 119576 9804 ?S03:33 0:00 imapd -C /etc/imapd.domain3.com.conf -s cyrus 1778 0.0 0.0 119480 9936 ?S03:33 0:00 imapd -C /etc/imapd.domain1.com.conf -s cyrus 1786 0.0 0.0 119768 10144 ?S03:33 0:00 imapd -C /etc/imapd.domain5.com.conf cyrus 1881 0.0 0.0 119808 10080 ?S03:34 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1912 0.0 0.0 119688 9868 ?S03:36 0:00 imapd -C /etc/imapd.domain2.com.conf cyrus 1937 0.0 0.0 119784 10216 ?S03:38 0:00 imapd -C /etc/imapd.domain3.com.conf cyrus 1947 0.0 0.0 125872 10660 ?S03:39 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1993 0.0 0.0 119604 9808 ?S03:42 0:00 imapd -C /etc/imapd.domain4.com.conf cyrus 2078 0.0 0.0 117044 7628 ?S03:48 0:00 imapd -C /etc/imapd.domain4.com.conf root 2080 0.0 0.0 10548 1656 pts/2S+ 03:48 0:00 grep --color=auto imapd Then try to connect: user@somesystem:~> telnet imap.domain2.com 143 Trying 192.168.110.175... Connected to imap.domain2.com. Escape character is '^]'. Then mailserver is the same except one new process at the end: MAILSERVER:~ # ps auwwx|grep imapd cyrus 1738 0.0 0.0 119572 10140 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf -s cyrus 1745 0.0 0.0 119580 9812 ?S03:32 0:00 imapd -C /etc/imapd.domain2.com.conf -s cyrus 1749 0.0 0.0 119596 9856 ?S03:32 0:00 imapd -C /etc/imapd.domain3.com.conf cyrus 1750 0.0 0.0 129424 11500 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1751 0.0 0.0 119696 9988 ?S03:32 0:00 imapd -C /etc/imapd.domain5.com.conf cyrus 1752 0.0 0.0 119596 9816 ?S03:32 0:00 imapd -C /etc/imapd.domain4.com.conf cyrus 1753 0.0 0.0 119604 9964 ?S03:32 0:00 imapd -C /etc/imapd.domain3.com.conf cyrus 1754 0.0 0.0 119596 9652 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1755 0.0 0.0 119596 9800 ?S03:32 0:00 imapd -C /etc/imapd.domain5.com.conf cyrus 1756 0.0 0.0 119604 10056 ?S03:32 0:00 imapd -C /etc/imapd.domain4.com.conf cyrus 1757 0.0 0.0 129564 11724 ?S03:32 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1758 0.0 0.0 119512 9896 ?S03:33 0:00 imapd -C /etc/imapd.domain1.com.conf -s cyrus 1766 0.0 0.0 119588 9904 ?S03:33 0:00 imapd -C /etc/imapd.domain3.com.conf -s cyrus 1767 0.0 0.0 119576 9804 ?S03:33 0:00 imapd -C /etc/imapd.domain3.com.conf -s cyrus 1778 0.0 0.0 119480 9936 ?S03:33 0:00 imapd -C /etc/imapd.domain1.com.conf -s cyrus 1786 0.0 0.0 119768 10144 ?S03:33 0:00 imapd -C /etc/imapd.domain5.com.conf cyrus 1881 0.0 0.0 119808 10080 ?S03:34 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1912 0.0 0.0 119688 9868 ?S03:36 0:00 imapd -C /etc/imapd.domain2.com.conf cyrus 1937 0.0 0.0 119784 10216 ?S03:38 0:00 imapd -C /etc/imapd.domain3.com.conf cyrus 1947 0.0 0.0 125872 10660 ?S03:39 0:00 imapd -C /etc/imapd.domain1.com.conf cyrus 1993 0.0 0.0 119604 9808 ?S03:42 0:00 imapd -C /etc/imapd.domain4.com.conf cyrus 2078 0.0 0.0 117044 7628 ?
Re: Info-cyrus Digest, Vol 142, Issue 30
isten="mail.domain2.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain3.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain4.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain5.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain6.com:lmtp" maxchild=-1 maxforkrate=100 #lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" # this is only necessary if using notifications #notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" } EVENTS { # this is required checkpoint cmd="ctl_cyrusdb -c" period=30 # this is only necessary if using duplicate delivery suppression, # Sieve or NNTP duplicateprune cmd="cyr_expire -E 3" at=0400 # Expire data older then 69 days. Two full months of 31 days # each includes two full backup cycles, plus 1 week margin # because we run our full backups on the first sat/sun night # of each month. deleteprune cmd="cyr_expire -E 4 -D 69" at=0430 expungeprune cmd="cyr_expire -E 4 -X 69" at=0445 # this is only necessary if caching TLS sessions tlsprune cmd="tls_prune" at=0400 # Uncomment the next entry, if you want to automatically remove # old messages of EVERY user. # This example calls ipurge every 60 minutes and ipurge will delete # ALL messages older then 120 days. # enter 'man 8 ipurge' for more details #cleanup cmd="ipurge -d 120 -f" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain1.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain2.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain3.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain4.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain5.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain6.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain1.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain2.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain3.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain4.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain5.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain6.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain1.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain2.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain3.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain4.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain5.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain6.com" period=60 # Create search indexes regularly squatter cmd="squatter -s -i" at=0530 # running sa-learn sa-learn cmd="/usr/local/bin/cyrus-salearn.pl" period=60 sa-update cmd="/usr/bin/sa-update -v" at= } MAILSERVER:~ # cat /etc/imapd.domain1.com.conf configdirectory: /var/lib/imap partition-default: /var/spool/imap sievedir: /var/lib/sieve annotation_definitions: /etc/imapd.annotations.conf # admins: cy...@domain1.net allowanonymouslogin: no autocreatequota: 1 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd lmtp_overquota_perm_failure: no #lmtp_catchall_mailbox: admin lmtp_downcase_rcpt: yes lmtp_fuzzy_mailbox_match: yes expunge_mode: delayed deletedprefix: DELETED delete_mode: delayed # added by Michael Hieb Jun 22 2014 allowplaintext: yes unixhierarchysep: yes allowplainwithouttls: no altnamespace: no virtdomains: userid servername: imap.domain1.net # # if you want TLS, you have to generate certificates and keys # tls_cert_file: /etc/letsencrypt/live/imap.domain1.net/cert.pem tls_key_file: /etc/letsencrypt/live/imap.domain1.net/privkey.pem tls_ca_file: /etc/letsencrypt/live/imap.domain1.net/chain.pem tls_ca_path: /etc/ssl/certs tls_versions: tls1_0 tls1_1 tls1_2 # added by Michael Hieb 20-Jan-2017 for lmtp on port (not socket) lmtp_admins: lmtpuser MAILSERVER:~ # Note: before I discovered the problem with forking could be triggered by switching between single threaded and multi-threaded cyrus server, I thought problem could be related to resource constraints. This is why I set all processes with maxchild=-1 maxforkrate=100. I also set the following in /etc/systemd/system/cyrus.service MAILSERVER:~ # cat /etc/systemd/system/cyrus.service [deleted...] LimitRTPRIO=5 LimitNOFILE=5 LimitNPROC=5 MAILSERVER:~ # None of these resource settings made any difference and the problem goes away as soon as cyrus is single threaded - so I do not believe it is a resource constraint (at least one I understand at this point). Any help would be much appreciated. 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 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 -- next part -- A non-text attachment was scrubbed... Name: boutilpj.vcf Type: text/x-vcard Size: 286 bytes Desc: not available URL: <http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20170523/c8f3d992/attachment.vcf> 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
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
isten="mail.domain2.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain3.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain4.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain5.com:lmtp" maxchild=-1 maxforkrate=100 lmtp cmd="lmtpd -a" listen="mail.domain6.com:lmtp" maxchild=-1 maxforkrate=100 #lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" # this is only necessary if using notifications #notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" } EVENTS { # this is required checkpoint cmd="ctl_cyrusdb -c" period=30 # this is only necessary if using duplicate delivery suppression, # Sieve or NNTP duplicateprune cmd="cyr_expire -E 3" at=0400 # Expire data older then 69 days. Two full months of 31 days # each includes two full backup cycles, plus 1 week margin # because we run our full backups on the first sat/sun night # of each month. deleteprune cmd="cyr_expire -E 4 -D 69" at=0430 expungeprune cmd="cyr_expire -E 4 -X 69" at=0445 # this is only necessary if caching TLS sessions tlsprune cmd="tls_prune" at=0400 # Uncomment the next entry, if you want to automatically remove # old messages of EVERY user. # This example calls ipurge every 60 minutes and ipurge will delete # ALL messages older then 120 days. # enter 'man 8 ipurge' for more details #cleanup cmd="ipurge -d 120 -f" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain1.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain2.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain3.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain4.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain5.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Spam*@domain6.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain1.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain2.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain3.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain4.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain5.com" period=60 cleanup cmd="ipurge -f -d 30 user/%/Trash*@domain6.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain1.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain2.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain3.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain4.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain5.com" period=60 cleanup cmd="ipurge -f -d 60 user/%/Sent*@domain6.com" period=60 # Create search indexes regularly squatter cmd="squatter -s -i" at=0530 # running sa-learn sa-learn cmd="/usr/local/bin/cyrus-salearn.pl" period=60 sa-update cmd="/usr/bin/sa-update -v" at= } MAILSERVER:~ # cat /etc/imapd.domain1.com.conf configdirectory: /var/lib/imap partition-default: /var/spool/imap sievedir: /var/lib/sieve annotation_definitions: /etc/imapd.annotations.conf # admins: cy...@domain1.net allowanonymouslogin: no autocreatequota: 1 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd lmtp_overquota_perm_failure: no #lmtp_catchall_mailbox: admin lmtp_downcase_rcpt: yes lmtp_fuzzy_mailbox_match: yes expunge_mode: delayed deletedprefix: DELETED delete_mode: delayed # added by Michael Hieb Jun 22 2014 allowplaintext: yes unixhierarchysep: yes allowplainwithouttls: no altnamespace: no virtdomains: userid servername: imap.domain1.net # # if you want TLS, you have to generate certificates and keys # tls_cert_file: /etc/letsencrypt/live/imap.domain1.net/cert.pem tls_key_file: /etc/letsencrypt/live/imap.domain1.net/privkey.pem tls_ca_file: /etc/letsencrypt/live/imap.domain1.net/chain.pem tls_ca_path: /etc/ssl/certs tls_versions: tls1_0 tls1_1 tls1_2 # added by Michael Hieb 20-Jan-2017 for lmtp on port (not socket) lmtp_admins: lmtpuser MAILSERVER:~ # Note: before I discovered the problem with forking could be triggered by switching between single threaded and multi-threaded cyrus server, I thought problem could be related to resource constraints. This is why I set all processes with maxchild=-1 maxforkrate=100. I also set the following in /etc/systemd/system/cyrus.service MAILSERVER:~ # cat /etc/systemd/system/cyrus.service [deleted...] LimitRTPRIO=5 LimitNOFILE=5 LimitNPROC=5 MAILSERVER:~ # None of these resource settings made any difference and the problem goes away as soon as cyrus is single threaded - so I do not believe it is a resource constraint (at least one I understand at this point). Any help would be much appreciated. 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 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 -- next part -- A non-text attachment was scrubbed... Name: boutilpj.vcf Type: text/x-vcard Size: 286 bytes Desc: not available URL: <http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20170523/c8f3d992/attachment.vcf> 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
Re: Multi-thread cyrus delayed forking of imapd processes after connecting to master listener
I set maxforkrate=100 to make to raise it well above a default. 100 a second is quite a lot and logs show I am no where near that many connections. I am not sure if I can define the maxforkrate parameter so that it is unlimited (for testing) so I just set it at a number well above what I see the server trying to do. I tried prefork and found it did not help the problem, most of the prefork sessions also had the wait condition. Michael On 05/24/2017 03:11 AM, Scott Lambert wrote: I may be completely missing the point and I don't know your environment. It looks like you may have designed in some delays if the server is pretty busy, especially during restart. On Fri, May 19, 2017 at 05:55:32PM +0800, Michael Hieb wrote: Here are the configuration details: imap cmd="imapd -C /etc/imapd.domain1.com.conf " listen="192.168.171.4:imap" maxchild=-1 maxforkrate=100 imaps cmd="imapd -C /etc/imapd.domain1.com.conf -s " listen="192.168.171.4:imaps" maxchild=-1 maxforkrate=100 maxforkrate will limit you to 100 forks per second. That's quite a lot but between bad guys and reconnects of clients after a restart, that may be limiting. I'm not sure I understand maxforkrate without a maxchild limit. That's probably a lack of imagination on my part. Maybe it would be good to prefork a few instances of each service? 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