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

Eserv Forum / E5 / Mail / Число процессов smtpsend4

recent wikipost // (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
Недавно увидел, что acSMTP наспаунил у меня аж ~800 процессов smtpsend4 o_O. Возник вопрос, как можно ограничить это количество? А то так и без памяти недолго остаться. Пока поставил ключ -z, но это, если я правильно понял, ограничит производительность, а оповещалок от нас отправляется уйма.
 
Комментарии к этой версии (09.01.2013 19:40) [~atest-t] d2dc176f
АвторДатаТекстtags
ac09.01.2013 21:13
Это наверное у вас довольно старый smtpsend4. Он уже несколько лет как сам себя ограничивает 20ю процессами. Обновите E4 или E5 или просто возьмите smtpsend4.exe из текущего дистрибутива Eserv/5 (могут потребоваться еще dll из каталога ext).
wikipost
atest-t09.01.2013 21:51
ред: 09.01.2013 21:52
Да, он почему-то не попадал под апдейты. Обновился только после удаления. Пока полёт нормальный, спасибо! А то я был немного ошарашен)))
> Он уже несколько лет как сам себя ограничивает 20ю процессами
Это хардкод? Или есть волшебный ключик? Мне было бы вполне нормально иметь лимит в 100 экземпляров
wikipost
ac09.01.2013 23:04
Да, хардкод. Могу выслать версию с сотней, но я думаю 20 оптимально, дальше они больше времени тратят не на отправку, а на перебор занятых другими экземплярами файлов. Если очень большие объемы рассылок, то можно вместо smtpsend'а использовать спец.мейлеры — например, ADR, который в своё время был написан как альтернатива штатному smtpsend2.
wikipost
atest-t10.01.2013 16:52
История повторяется... smtpsend4.exe версии 23.12.2011 07:02, скопирован из дистрибутива 5.04, работают 387 процессов.
ОС Win Server 2008 R2 x64.
wikipost
ac10.01.2013 17:11
Проверьте, что имя файла именно маленькими буквами "smtsend4.exe", он в списке процессов сам себя ищет чувствительно к регистру.
wikipost
atest-t10.01.2013 19:22
ред: 10.01.2013 19:23
Точно такое же, как в строках экзешника (смотрел через ProcessExplorer), рядом с COUNT_SMTPSEND. Через командную строку в тасклисте находит количество исправно.
Работает вообще от имени SYSTEM.
wikipost
ac10.01.2013 19:57
atest-t пишет: Через командную строку в тасклисте находит количество исправно.

Не понял. В смысле при запуске из ком.строки лишние экземпляры не запускаются?
wikipost
atest-t10.01.2013 20:32
Не, я имел в виду, что tasklist | find /c "smtpsend4.exe" вернёт верное число процессов.
wikipost
ac10.01.2013 20:39
А вот такая ком.строка:
smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . BYE

?
wikipost
atest-t10.01.2013 20:50
ред: 10.01.2013 20:58
Для чистоты эксперимента удалил все экзешники и заново их достал через апдейт. После перезапуска службы — пока 19 процессов, а ваша строка возвращает 0.
... 25, строка возвращает 0.
Число продолжило расти, а там всё 0
Кстати первые два раза вообще показало пустоту.
wikipost
pig10.01.2013 21:09
А винда какая?
wikipost
atest-t10.01.2013 21:11
atest-t пишет: ОС Win Server 2008 R2 x64.
wikipost
pig10.01.2013 23:07
Может, в том и проблема, что x64?
А что tasklist про smtpsend4.exe в точности говорит? Хватит одной строки.
wikipost
ac10.01.2013 23:19
У меня на x64 нормально считает.
wikipost
ac10.01.2013 23:31
pig пишет: А что tasklist про smtpsend4.exe в точности говорит?

ForEachProcess2 не у tasklist'а спрашивает, а через функцию NtQuerySystemInformation.

atest-t пишет: ваша строка возвращает 0

А сколько процессов в системе сейчас? (не smtpsend'ов, а вообще всех)
Другие "процессные" функции в Eserv'е работают нормально? (например, показывает ли список активных TCP-соединений или серверов в Информация/Система/Сеть/Соединения)?
wikipost
atest-t11.01.2013 10:02
pig пишет: А что tasklist про smtpsend4.exe в точности говорит?

Например
>tasklist /fi "IMAGENAME eq smtpsend4.exe" Image Name PID Session Name Session# Mem Usage smtpsend4.exe 89376 Services 0 21 804 K

ac пишет: А сколько процессов в системе сейчас? (не smtpsend'ов, а вообще всех)
Другие "процессные" функции в Eserv'е работают нормально? (например, показывает ли список активных TCP-соединений или серверов в Информация/Система/Сеть/Соединения)?

Нормально — 300-400. Когда smtpsend бушует, подымалось до 1300.
Список соединений показывает.

Кстати! Сейчас 2 smtpsend'а работают, и ваша строка возвращает 3 , если он считает вместе с собой, то всё, по идее ок. Убираю -z, перезапускаю. Вроде бы пока считает... Буду следить за развитием событий.
wikipost
atest-t11.01.2013 10:22
ред: 11.01.2013 10:27
Прошло полчаса, работают 3 процесса, и строчка снова возвращает ноль. Я не понял. Окно "Соединения" кажет все процессы, но в качестве имени "process-not-found". Ничего не трогал. Рестарт сервисов acSMTP и acWEB ничего не дал.
wikipost
atest-t11.01.2013 10:37
ред: 11.01.2013 11:12
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724509(v=vs.85).aspx
MSDN пишет: NtQuerySystemInformation may be altered or unavailable in future versions of Windows. Applications should use the alternate functions listed in this topic.

Может пришло время?

После перезапуска с ключом z и по прошествии 15 минут снова появились цифры и имена процессов.

И опять 0. В общем, жду комментариев. С нагрузкой пока справляется приемлемо, запущенный с ключом z.
wikipost
ac11.01.2013 12:21
Файл: SmtpSend 4.75 debug [110928 bytes]

smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . NQSI_ERR @ . BYE
wikipost
atest-t11.01.2013 13:13
ред: 11.01.2013 14:19
Результат:
C:\>C:\E4\acSMTP\smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . BYE 0 C:\>C:\E4\acSMTP\dbg\smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . NQSI_ERR @ . BYE 4 0

Upd: Ещё пример, когда оригинальный процесс правильно считает:
C:\>C:\E4\acSMTP\smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . BYE 4 C:\>C:\E4\acSMTP\dbg\smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . NQSI_ERR @ . BYE 4 0
wikipost
ac11.01.2013 17:39
Если новый вариант выйдет за пределы 20 процессов, то запустите эту строчку
smtpsend4.exe PAD DUP 0! ' COUNT_SMTPSEND ForEachProcess2 DROP PAD @ . NQSI_ERR @ . BYE

  • будет ли второе число (код ошибки) ненулевым когда-нибудь.
  • wikipost
    atest-t12.01.2013 16:49
    Вот с этим файликом всё супер, и очередь писем рассасывается оч быстро. Если не секрет, в чём проблема была?
    wikipost
    ac12.01.2013 18:54
    Размер буфера для приёма списка процессов увеличил. 300 кило было маловато для вашего списка.
    wikipost
    atest-t12.01.2013 19:55
    И при каких условиях это потенциально может повториться? А то у нас на этом серваке чего только не крутится.
    wikipost
    ac12.01.2013 22:44
    Если число процессов будет еще вдвое выше нынешних максимумов. Если повторится, то усложним алгоритм с автоподбором размера буфера, как для gzip'а пришлось сделать.
    wikipost
    Работает на Eserv/5.05567 (10.02.2020)