Я использую почтовый сервер для около 200 пользователей с courier-imap на Debian 7. Этот сервер работает под управлением ядра Linux 2.6.38 внутри гостевой системы Xen, имеющей 2 ядра процессора и 2 ГБ ОЗУ. Сервер принимает входящую почту через postfix, но ресурсоемкие проверки (amavis, spamassassin) делегируются другому серверу.
В последнее время я сталкиваюсь с проблемами производительности IMAP из-за случайного отключения клиентских подключений. Нагрузка на сервер не низкая, но и не такая высокая, даже в тех случаях, когда происходит разрыв соединения. В часы пик у меня одновременно работает около 120 клиентов imap, а 5-минутная нагрузка <1.
Я заметил, что разрывы подключения появляются одновременно со следующими строками журнала на моем сервере:
imapd: FAMPending: timeout
Я предполагаю, что, когда истекает время ожидания FAM, сервер imap возвращает какую-то ошибку, и, в зависимости от клиента, ошибка исправляется изящно или нет (некоторым клиентам веб-почты это не нравится).
Обычный Debian courier-imap
пакет требует реализации fam, у меня есть выбор использовать famd
или gamin
. Я пробовал оба, и у обоих истекают таймауты. Мне кажется, что gamin снижает нагрузку на сервер, но все равно возникают таймауты.
Мне интересно, есть ли что-нибудь, что я могу настроить, чтобы улучшить производительность семьи / игры и избежать сообщений о тайм-ауте. В демонах особо нечего настраивать. Однако может ли быть так, что у меня заканчиваются файловые дескрипторы или ресурсы inotify? Как я мог это проверить?
Или вы думаете, что лучшим выбором было бы обновить мою гостевую Xen или отказаться от courier-imap?