Почему Exim в Docker-контейнере работает медленнее, чем на обычном сервере?
Господа, ситуация.
Пишу велосипед для имейл-маркетинга, оплачивать сторонние решения для базы в 350К+ стало слишком дорого. Работает (вернее, работал) он так: скрипт на Ruby проходится по подписчикам, рендерит HTML с подставленными для конкретного подписчика ссылками и текстом и отправляет письма через Exim. Настроенный Exim со включенным кэшем DNS отправляет 15-20 писем в секунду. Но этого недостаточно.
Наша цель -- отправлять письма в 2-3 раза быстрее. Для этого я развернул четыре Docker-контейнера с Exim внутри. Скрипт теперь делит всех подписчиков на четыре куска и асинхронно шлет сообщения каждому из контейнеров.
Но довольно скоро выяснилось, что четыре MTA одновременно отправляют письма медленнее, чем один на хосте. Даже один Exim в контейнере медленнее.
Я проверял сеть, диски, мониторил htop, iotop и nload под нагрузкой (сервер справляется, до полной загрузки далеко), перевел Docker с loopback на thinpool, положил spool в tmpfs -- все тщетно. Очевидно, где-то есть бутылочное горлышко, о котором я не знаю.