Задать вопрос
@alexan

Listen queue overflow во FreeBSD при почтовой рассылке. Где подкрутить?

Дело происходит так.
Выделенный сервер. PHP скрипт делает небольшую почтовую рассылку, 1000-2000 писем. При этом почему-то забивается системная очередь у pickup (вспомогательный сервис у Postfix):

netstat -Lan
...
unix  151/0/100        public/pickup
...

и система ругается:

kernel: sonewconn: pcb 0xfffff8004cbbf870: Listen queue overflow: 151 already in queue awaiting acceptance
last message repeated 972 times

Сами письма вроде бы уходят, в логах нет ошибок, а есть примерно следующее:

Feb 15 17:01:02 theserver postfix/pickup[29787]: 7627929DE4A5: uid=1001 from=<theuser>
Feb 15 17:01:02 theserver postfix/cleanup[33164]: 7627929DE4A5: message-id=<20170215140102.7627929DE4A5@theserver.ru>
Feb 15 18:01:02 theserver opendkim[972]: 7627929DE4A5: DKIM-Signature field added (s=thedomen, d=thedomen.ru)
Feb 15 17:01:02 theserver postfix/qmgr[81797]: 7627929DE4A5: from=<theuser@theserver.ru>, size=1811, nrcpt=1 (queue active)
Feb 15 17:01:03 theserver postfix/smtp[33168]: 7627929DE4A5: to=<someemail@example.com>, relay=mx.yandex.ru[87.250.250.89]:25, conn_use=11, delay=58, delays=57/0/0/0.61, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on mxfront3j.mail.yandex.net as 1487167263-xPE7azV17j-12jSJTiT)
Feb 15 17:01:03 theserver postfix/qmgr[81797]: 7627929DE4A5: removed

..но кто же его знает, что там происходит если очередь на входе уже переполнена. Может система просто отбрасывает письма и они не попадают в очередь?

Разумное увеличение размера очереди результата не приносит.
Конфиг postfix-а ничего особенного не содержит, его отличия от чистого установочного конфига примерно такие:
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_recipient_access hash:/usr/local/etc/postfix/access

# Запрещение приёма почты с некоторых адресов
smtpd_sender_restrictions = hash:/usr/local/etc/postfix/incoming_access

smtpd_banner = $myhostname ESMTP

local_recipient_maps = hash:/usr/local/etc/postfix/recipient_map $alias_maps

# DKIM
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Где копать?
  • Вопрос задан
  • 1217 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
athacker
@athacker
Это очередь так-то не почты, а входящих TCP-соединений. Тупит ваш pickup, не успевает обрабатывать новые соединения. Воткните паузу в скрипт, который письма шлёт, пусть шлёт не всю 1000 сразу, а по 100 за раз. Либо смотрите, из-за чего pickup может тупить. Может, нагрузка на диск высокая. Может, памяти мало и оно свопится постоянно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
в ком стороке дайте
sysctl kern.ipc.somaxconn
Ответ написан
mxms
@mxms
IT voodoo
Задайте значение kern.ipc.soacceptqueue больше текущего в sysctl.conf.
Старый параметр
kern.ipc.somaxconn

deprecated
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы