http-webhook-max-connections

<acct-file>

Сколько потоков одновременно отправляют пачки на приёмник
в конфигурации это строкаhttp-webhook-max-connections 1внутри блока <acct-file>
Один поток или несколько

По умолчанию отправкой занимается один поток, и пачки уходят по очереди. Строка позволяет поднять их число — потолок 50.

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

Порядок записей при нескольких потоках не гарантирован. Пачки уходят параллельно, и приёмник может получить их не в том порядке, в каком они собирались. Для учёта это обычно неважно — у записей есть свои временные метки, — но приёмник, полагающийся на порядок, сломается.

Сначала стоит попробовать сжатие. http-webhook-transfer-encoding уменьшает передаваемый объём, и часто этого хватает вместо распараллеливания.

Главная ловушка — поднять число потоков против медленного приёмника. Если он медленный из-за нагрузки, десять потоков сделают ему в десять раз хуже, повторы участятся, и станет медленнее. Разбираться надо на стороне приёмника.
Что делает Хаб. Не пишет — остаётся один поток. При минуте интервала и потолке пачки в 1 МБ одного достаточно: наш приёмник отвечает сразу, разбор идёт в фоне.

Строка пригодится, если поток парка вырастет настолько, что минутные пачки перестанут укладываться в минуту.

Рекомендуемые значения

Поднимать только по измеренной причине:

Значение Когда
1 (умолчание) почти всегда
2–5 пачки не успевают уходить за интервал
до 50 очень большой поток и быстрый приёмник

Перед этим стоит попробовать сжатие — оно дешевле для обеих сторон.

Умолчание 1 и потолок 50 — из руководства (§ 3.3.11.26). Замечание про порядок пачек и совет сначала пробовать сжатие — наши.
Пример в конфигурации
# поднимать только тогда, когда пачки не укладываются в интервал
<acct-file /var/log/pmta/webhook.json>
    http-webhook-url https://hub.example.com/api/telemetry/pmta/7
    http-webhook-max-interval 1m
    http-webhook-max-connections 4</acct-file>
Признак, что пора: промежуточные файлы копятся при исправном приёмнике, отвечающем 2xx.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Поднимают число потоков, не проверив ответы приёмника

наш опыт

Чем чреватоНакопление файлов чаще означает отказ приёмника, а не нехватку потоков. Распараллеливание в этом случае только умножает повторы.
Как заметитьФайлы копятся, а в журнале MTA ошибки отправки.
Как правильноСначала посмотреть ответы — http-webhook-log-verbose их покажет, — и лечить приёмник.

Ждут сохранения порядка пачек

наш опыт

Чем чреватоПри нескольких потоках пачки уходят параллельно и приходят в произвольном порядке. Приёмник, полагающийся на порядок, начнёт терять или путать записи.
Как заметитьПриёмник жалуется на записи «из будущего» или пропуски.
Как правильноОпираться на временные метки в самих записях либо оставить один поток.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
http-webhook-max-connections <integer>
Значения
целое от 1 до 50
Умолчание
1 § 3.3.11.26
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<acct-file>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри своего <acct-file> и действует на отправку только его пачек. У каждого потока учёта своё число потоков отправки.
Как проверить на узле
Признак нехватки — накопление промежуточных файлов при исправном приёмнике:
ls -la /var/log/pmta/*.json | wc -l
Растущее число при ответах 2xx означает, что отправка не поспевает. Если ответы не 2xx, дело не в потоках, а в приёмнике.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Собрать телеметрию