Регистрация...

Eserv Forum / E5 / Mail / acSMTP5 ест память

recent wikipost // (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
в последнее время acSMTP5 стал есть оперативную память.

Ест ее со скоростью 10-20Мб/сек, добирается до 2Гб, валится с сообщением в acSMTP.log типа "Can't create thread. Error:8", служба рестартует (ибо настроен автоматический перезапуск службы), какое-то время живет в размере 15Мб, а потом все это повторяется.
ОС Windows 7 на виртуалке
 
Комментарии к этой версии (27.01.2015 11:15) [~n.stepin] 9da4b8a1
АвторДатаТекстtags
n.stepin27.01.2015 11:28
обнаружил почему это происходит, но хотелось бы вариант предупреждающих действий от разработчика.

Проблема была в том, что пользователь пытался отправить внешнему адресату письмо размером в 1Гб.

Ограничение в 10Мб настроено, однако сервер, видимо прежде, чем дать отлуп по размеру пытается письмо-то от почтового клиента отправителя получить, валится и опять пытается получить...

Можно ли как-то настроить есерв, чтобы он сразу отлуп клиенту давал.
wikipost
pig27.01.2015 12:29
ред: 27.01.2015 12:30
Фишка в том, что клиент анализирует ответ только после передачи всего тела письма. Если тупо оборвать соединение, он посчитает это ошибкой и будет повторять попытки.

acSMTP без обвески, по идее, оперативную память пожирать при этом не должен, тело письма тупо пишется на диск для последующего разбора полётов. Какие у вас опции включены?
wikipost
n.stepin27.01.2015 12:50
popfile, acfilter, drweb

интересная штука, появляется файл в data\mail\spool с нулевым размером, растет память процесса acsmtp, когда процесс письмо получил, файл меняет размер на реальный и из папки удаляется. проблемное письмо так и болтается с нулевым размером.
wikipost
pig27.01.2015 15:38
Похоже, поменялся алгоритм приёма по сравнению с четвёртой версией...
wikipost
ac27.01.2015 20:26
Нет, в этой части (приём письма) не поменялся. При приёме пишется напрямую на диск. Но вот для фильтров строки письма в памяти тоже остаются. Либо там утечка, либо какой-то фильтр слетает. Если SMTP-поток слетает, то вся занятая им память освобождается, "кумулятивного" эффекта быть не должно. Интересно было бы взглянуть на лог acSMTP.log (support@eserv.ru).
wikipost
n.stepin20.02.2015 14:54
в логе пусто (кроме попыток подобрать пароли пользователей со стороны спамеров) поведение acsmtp четко видно.
Пока папка mail\out процесс ест порядка 10Мб, как только в папке появляется исходящее письмо процесс начинает есть память, как только письмо из папки исчезает память возвращается обратно к значению 10Мб.
Проблема начинается тогда, когда "добрый" пользователь пытается отправить большое письмо, т.к. память процесс ест пропорционально размеру письма.
Последний случай был, когда пытались отправить письмо размером в 1Гб, соответственно acstmp сожрал оперативку и завалился, рестартанул по ошибке, а пользовательский клиент опять пытается пропихнуть это же письмо и т.д.
wikipost
Работает на Eserv/5.05567 (10.02.2020)