<acct-file>
Строка включает сжатие содержимого перед отправкой. Поддерживается одно значение — gzip, и по умолчанию сжатия нет.
Записи учёта сжимаются очень хорошо. Это текст с повторяющимися именами полей: NDJSON повторяет их в каждой строке, CSV — в заголовке, но сами значения однотипны. Выигрыш на таком материале обычно кратный.
Приёмник должен уметь разжимать. Заголовок MTA проставит сам, но если принимающая сторона его не смотрит, она получит непонятный двоичный поток. Приёмник, разбирающий тело до ответа, ответит не 2xx — и отправка встанет в повтор; приёмник, отвечающий сразу, примет пачку и потеряет её при разборе.
Это первое, что стоит попробовать при разговоре об объёме — до увеличения интервала и до распараллеливания.
Хуже, если приёмник отвечает до разбора тела: он скажет 2xx, повтора не будет, и пачки пропадут молча.
🔎 А стоило бы попробовать. С каждого узла парка раз в минуту уходят пять видов записей — с полным набором полей по умолчанию и добавками (record-fields d *,timeFirstAttempt,… и так далее). Это самый сжимаемый материал, какой бывает, и сжатие ощутимо сократило бы трафик от узлов к Хабу.
🔴 Но сначала — разжатие в приёмнике. Сейчас его нет, а Laravel тело с Content-Encoding: gzip сам не разжимает. Причём повтора не будет: наш приёмник отвечает 2xx, не заглядывая в тело, фоновый разбор не найдёт в пачке ни одной строки JSON — и записи пропадут, оставив след только в счётчике ошибок приёма телеметрии.
Значение одно, вопрос только «включать или нет»:
| Значение | Когда |
|---|---|
| не задавать (умолчание) | приёмник не умеет разжимать |
| gzip | умеет — тогда всегда |
Проверять надо приёмник, а не узел: MTA сжимает и помечает сам.
# самая дешёвая экономия: включается одной строкой <acct-file /var/log/pmta/webhook.json> http-webhook-url https://hub.example.com/api/telemetry/pmta/7 http-webhook-transfer-encoding gzip</acct-file>
что делают не так и чем это кончается2 ошибки▶
наш опыт
§ 3.3.11.22
1 связь
curl -s -o /dev/null -w '%{http_code}\n' -X POST -H 'Content-Encoding: gzip' -H 'Content-Type: application/x-ndjson' --data-binary @batch.json.gz URL
3 статьи
◇Что узел рассказывает о себе и по каким каналамСемь поверхностей наблюдения: веб-монитор, консоль в четырёх форматах, журнал, учёт, поиск по учёту, метрики и выгрузка во внешнюю аналитику.◇Два обработчика входящих отчётов и что с ними делатьОтказы письмом и жалобы разбираются двумя одинаково устроенными блоками; у каждого свой список адресов и своя пара решений о судьбе письма.◇Пять способов очереди отдать письмоОчередь не обязана ходить по SMTP: она умеет писать в файл, запускать программу, стучаться по HTTP или выбрасывать.