Назад | Перейти на главную страницу

Замедление аутентификации MySQL в Dovecot

У меня есть сервер IMAP / POP3 / Webmail с Dovecot1 2.2.10 с серверной частью MySQL, расположенной на другом сервере. Сервер работает с конфигурацией по умолчанию.

...
driver = mysql
default_pass_scheme = plain
...

Моя проблема в том, что иногда, когда он перегружается, он начинает отказывать в аутентификации (иначе говоря, неверный пароль) клиентов. Он делает это для всех разных типов клиентов (pop3, imap, webmail), поэтому это должна быть проблема, связанная с сервером аутентификации.

Моя первая мысль заключается в том, что недостаточно запущенных процессов аутентификации dovecot.

Что я могу настроить и в каком порядке, чтобы эта система могла одновременно обрабатывать больше запросов на аутентификацию клиентов?

Мой сервер MySQL не перегружен, это четырехъядерный компьютер со средней загрузкой ЦП 25% в течение дня.

В этот период резко возрастает загрузка ЦП почтового сервера. Использование памяти остается нормальным.

http://i58.tinypic.com/2q9gfpf.jpg

Это производственная система, поэтому все, что я могу сделать, это настроить некоторые переменные, которые наверняка ее не сломают.

Спасибо!

Не знаю, может ли то же самое, что происходит с Cyrus IMAPd, с Dovecot. Давай попробуем.

Ядро Linux собирает реальную случайность, энтропию из множества источников и событий. Эти данные могут быть прочитаны любой программой из /dev/random. Что ж, иногда, если генерируется недостаточно «реальной» случайности (например, сервер не содержит аппаратно ускоренного генератора случайных чисел), этот пул энтропии может быть пустым. И пока он пуст, любой процесс, ожидающий случайных данных из / dev / random, останавливается, пока пул энтропии истощается.

Всякий раз, когда эта задержка происходит на вашем сервере Dovecot, вы можете проверить watch -n1 'cat /proc/sys/kernel/random/entropy_avail' и посмотрите, остается ли значение равным нулю или около него. Если это так, вашему Dovecot требуется, чтобы случайность сгенерировалась быстрее.

Одно из решений - установить rngd (например, в Ubuntu / Debian это в rng-tools package) и настройте его для использования /dev/urandom. rngd показывает случайные данные /dev/random из источников, которые вы настраиваете для использования. Да, использовать полуслучайность в случае /dev/urandom но, по крайней мере, это работает.

В Cyrus IMAPd это была строка приветствия POP3 со случайно сгенерированной строкой, которая очень быстро потребляла / dev / random, а при большом количестве подключений приводила к полной остановке, продолжающейся до нескольких минут.


Совершенно другой вариант заключается в том, что ваше приложение веб-почты плохо обрабатывает соединения MySQL, поэтому max_connect_errors в MySQL превышается, и MySQL начинает отклонять ваш сервер Dovecot. В таком случае FLUSH HOSTS; на сервере MySQL командная строка MySQL должна помочь.

Если это основная причина ваших проблем с Dovecot, вам следует поднять MySQL max_connect_errors предел.

Я знаю, что мой ответ очень надуман и полностью снят в темноте, но как знать!