Некоторое время назад у меня был похожий вопрос, и я думал, что это решило мою проблему, но, к сожалению, это не так.
У меня есть тестовое приложение, которое подключает около 500 пользователей к почтовому серверу Dovecot 2.2.5 с использованием IMAP (аутентификация с открытым текстом, без SSL). После того, как dovecot обработает около 300 пользователей, старые соединения начинают выходить из строя, и я получаю ошибки как на стороне клиента, так и на стороне сервера.
Вот несколько примеров со стороны сервера:
Sep 23 19:05:52 imap-login: Info: Login: user=<test1>, method=PLAIN, rip=10.0.0.6, lip=10.0.0.2, mpid=1492, secured, session=<GqSHtRHnpQAKAAAG>
Sep 23 19:05:53 imap-login: Info: Login: user=<test2>, method=PLAIN, rip=10.0.0.6, lip=10.0.0.2, mpid=1494, secured, session=<K1OMtRHnpgAKAAAG>
Sep 23 19:05:53 imap-login: Info: Login: user=<test3>, method=PLAIN, rip=10.0.0.6, lip=10.0.0.2, mpid=1495, secured, session=<S/6QtRHnpwAKAAAG>
Sep 23 19:05:53 imap-login: Info: Login: user=<test4>, method=PLAIN, rip=10.0.0.6, lip=10.0.0.2, mpid=1496, secured, session=<37CVtRHnqAAKAAAG>
...
(Gets to around user=<test330>, then this:)
Sep 23 19:08:03 master: Error: service(imap): Initial status notification not received in 30 seconds, killing the process
Sep 23 19:08:04 imap: Fatal: master: service(imap): child 1840 killed with signal 9
Sep 23 19:08:04 imap(test211): Info: Connection closed: Connection reset by peer in=105 out=917
И затем я вижу повторяющиеся входы в систему от пользователей <300, а также пользователей до 500.
На стороне моего клиента я завален следующими сообщениями:
2013-09-23 19:07:57:997 Warning: .doMyLongCommand received an SocketTimeoutException exception java.net.SocketTimeoutException: Read timed out
2013-09-23 19:07:57:997 ERROR: : Read timed out
2013-09-23 19:07:57:997 test211:Reconnecting user due to error condition during SELECT_INBOX
Вот несколько вариантов конфигурации (используя dovecot -a
), которые связаны с одновременным обслуживанием большого количества клиентов:
default_client_limit = 2003
default_idle_kill = 1 hours
default_process_limit = 1000
default_vsz_limit = 1024 M
mbox_dotlock_change_timeout = 5 mins
mbox_lock_timeout = 8 mins
service_count = 0 (in service imap-login {} )
mail_max_userip_connections = 1000
noproc
и nofile
установлены очень высокие (102400), поэтому проблем быть не должно.
Я рисую здесь заготовку. Насколько я понимаю, я думаю, что корень проблемы может быть в одном из следующих:
Любая помощь будет принята с благодарностью.
Как загрузка процессора на сервере? Как насчет дискового ввода-вывода? Я подозреваю, что какой-то системный ресурс перегружен. Сервисные процессы запускаются слишком медленно, и dovecot master считает, что они не отвечают.
Это тайм-аут, с которым вы столкнулись: http://hg.dovecot.org/dovecot-2.2/file/b9498573f0d0/src/master/service.h#l7
РЕДАКТИРОВАТЬ Это также может быть очень строгий лимит количества пользовательских процессов в ulimit () или некоторая функция SELinux (например, в CentOS).
@ user991710 Может быть, вы могли бы более подробно объяснить, какие команды ваш тестовый клиент выдает серверу и что это за клиент.