Помогите пожалуйста разобраться в проблеме.
Cервер на Debian 5 , на него поставлен exim4 (apt-get install , в конфиге добавлен только smtp_acсept_max=5, и сделан dpkg-reconfigure exim4-config ).
Весь сервер отдан под один сайт + форум ipb. Все на php. Стоит задача только отправлять почту, принимать не нужно. Почты отправлять приходится относительно много - 10к пользователей, у многих есть подписки на темы форума, активно идет переписка в привате с отсылкой мейлов и сам сайт тоже рассылает уведомления, по одному-двум писем за день каждому.
Почта отправляется при помощи функции mail() , в php.ini поставлено
Код: Выделить всё
sendmail_path = /usr/sbin/exim4 -t
LA в этот момент - средний рабочий, от 3 до 7 - и тут же начинает расти до 15-20. htop показывает, что появляется несколько процессов /usr/sbin/exim4 -bd -q30m (см аттач htop) со статусом D
exiwhat в это время говорит, что:
Код: Выделить всё
3431 running queue: waiting for 1P6fIf-0000rM-Hd (3859)
3745 daemon: -q30m, listening for SMTP on port 25 (IPv6 and IPv4)
Munin показывает, что в данный момент отправки писем не происходит вообще, или происходит очень мало (см. аттач exim4)
Кэширование у сайта сделано на файлах, активно юзается mysql и диск согласно atop работает на 80-100% . Но это, имхо, не повод НАСТОЛЬКО сильно тормозить при отправке почты.
LA, кстати, растет тем сильнее, чем больше стоит smtp_accept_max в конфиге exim4 . При дефолтных значениях он подскакивал до 100 (соответственно, /usr/sbin/exim4 -bd -q30m в процессах появлялось больше), при том, что можно было вполне комфортно работать на сайте - процессор или диск не нагружались этим LA.
Лекарство -
Код: Выделить всё
kill -9 `ps -A|awk '/exim4/{print $1}'`
/etc/init.d/exim4 start
Вопросы.
Я совершенно не специалист по exim. Какие мысли, почему такое может происходить ? Как решить, или хотя бы локализовать проблему, что крутить ?
smtp_accept_max - это максимальное количество входящих коннектов или исходящих ? Если входящих, то почему они возникают при отправки почты и капитально вешают сервер ? Я посмотрел ошибки, отлупов приходит сравнительно мало, почти вся почта доставляется нормально.
Как заставить exim все письма сначала всасывать в очередь, а потом уже из неё раздавать ? Иначе в такие тормозные моменты при отправке PM на форуме nginx не дожидается ответа от php и показывает страницу с ошибкой.