total-max-smtp-out

GlobalкритичноХаб задаёт сам

Потолок исходящих соединений на весь узел
в конфигурации это строкаtotal-max-smtp-out 1200 (Enterprise licence), 200 (Standard licence)внутри блока Global
Потолок исходящих соединений на весь узел

Сколько исходящих SMTP-соединений узел держит одновременно, суммарно по всем очередям и всем адресам отправки. Это верхняя граница, под которой работают все остальные лимиты соединений.

Срабатывает первым и молча. Если в блоке получателя стоит max-smtp-out 200, а потолок узла ниже, фактически откроется столько, сколько разрешил потолок. В конфигурации при этом написано 200, и настройка выглядит применённой. На лицензии Standard потолок ещё и ограничен самой лицензией.

Настоящий предел не здесь. Руководство предупреждает отдельно: MTA верхней границы не проверяет, а упирается всё в дескрипторы и память машины. Соединение стоит дескриптора, и когда они кончаются, отказы приходят не от приёмника, а от операционной системы.

Главная ловушка. Потолок делится между всеми очередями, а не выдаётся каждой. Парк из десяти адресов, шлющих на пять получателей, — это полсотни очередей, конкурирующих за один и тот же запас соединений. Когда его не хватает, очереди не отказывают, а ждут — и это выглядит как «медленно», а не как «упёрлись».
Что делает Хаб. Ставит 5000 — на обычном парке упереться в это трудно, а запас снимает целый класс необъяснимых замедлений. Значение не зависит от выбранного темпа: темп управляется лимитами очередей, потолок узла только страхует от исчерпания ресурсов. Уровень лицензии Хаб не читает, поэтому предупредить, что на стандартной действует двести, ему нечем.
Рекомендуемые значения

Наше значение — 5000. Вендор рекомендует не выше 7500 и напоминает, что настоящий предел — дескрипторы и память машины, а не эта строка.

Лицензия важнее написанного. Standard разрешает не больше двухсот одновременных исходящих соединений, и всё, что выше, отбрасывается без сообщения. Enterprise без строки берёт 1200.

Считать от парка, а не от узла. Потолок делят все адреса отправки и все очереди: десять адресов по пятнадцать соединений на десять получателей — это полторы тысячи, и такой парк на стандартной лицензии упрётся в двести задолго до того, как исчерпает собственные лимиты.

Умолчания, потолок стандартной лицензии и совет не превышать 7500 — вендорские. Значение 5000 — наше.
Пример в конфигурации
# потолки узла — вне всяких блоков
total-max-smtp-out 5000total-max-smtp-in 1000
Так эти две строки и стоят в конфигурации, которую пишет Хаб, — рядом, в самом начале файла.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Поднимают лимит очереди, не подняв потолок узла

§ 3.3.1.2

Чем чреватоЛимит экземпляра срабатывает первым, и на лицензии Standard это происходит без сообщения — в конфиге 200, работает столько, сколько разрешил потолок.
Как заметитьЧисло соединений упирается в одно и то же значение независимо от того, что написано в блоке получателя.
Как правильноСначала поднять потолок узла, потом лимиты очередей. Проверять командой, показывающей действующие настройки, а не чтением конфигурации.

Считают, что число в конфигурации и есть действующий потолок

§ 3.3.1.2

Чем чреватоНа стандартной лицензии всё выше двухсот отбрасывается молча: ни ошибки при разборе, ни строки в журнале. Узел с 5000 в файле ведёт себя как узел с 200, и объяснения этому в конфигурации нет.
Как заметитьСтрока в файле одна, а состояние узла печатает в колонке maximum другое, заметно меньшее число.
Как правильноСверять с выводом состояния узла и знать уровень лицензии; на стандартной планировать парк от двухсот соединений, а не от написанного числа.

Поднимают потолок выше того, что выдержит машина

§ 3.3.1.2

Чем чреватоКаждое соединение стоит дескриптора и памяти, а MTA их не проверяет. На узле с мягким пределом в тысячу дескрипторов потолок в пять тысяч — обещание, которое машина не выполнит.
Как заметитьСоединения перестают открываться при живом приёмнике, а в журнале ошибки уровня операционной системы, а не отказы SMTP.
Как правильноСмотреть предел дескрипторов процесса на узле и держать потолок ниже него с запасом на приём, журналы и файлы очереди.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
total-max-smtp-out <number>
Значения
положительное целое, число одновременных соединений; на лицензии Standard действует не больше 200; на Enterprise верхнего предела нет, вендор советует не выше 7500
Умолчание
1200 (Enterprise licence), 200 (Standard licence) § 3.3.1.2
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: это свойство экземпляра целиком. Ниже него — потолок адреса отправки и лимит очереди получателя, оба одноимённые (max-smtp-out); выше — уровень лицензии, который эту строку и режет. Подхватывается по pmta reload.
⇄

Связанные директивы

4 связи

Как проверить на узле
Действующее значение, а не написанное, печатает состояние узла:
pmta show status
Раздел Connections, строка Outbound, колонка maximum — это и есть потолок, который применяется на самом деле. На стандартной лицензии там будет 200, сколько бы ни стояло в конфигурации; соседняя active покажет, насколько близко к нему подошли. § 6.3.17
В Хабе
Управляется
Конфигурации → Лимиты доставки
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Планирование мощности · Настроить темп под провайдера
Важность
критично