Назад | Перейти на главную страницу

Уменьшите запись на диск в системе sendmail

Я использую sendmail на ферме из ~ 10 серверов, обрабатывающих 200-500 сообщений в минуту. Я обнаружил, что после перехода в виртуальную среду моим самым узким местом является запись на диск, в частности, вывод журнала sendmail и очередь почты.

У меня нет контроля над оборудованием, чтобы там что-либо модифицировать.

У меня два вопроса: 1) Можно ли вывести сжатые журналы sendmail на диск? Это не только уменьшит общее количество операций записи на диск, но и избавит от необходимости сжимать журнал во время ротации.

2) Как я могу настроить sendmail, чтобы не записывать временные файлы в очередь, когда это возможно?

Изменить: предоставить дополнительную информацию: у меня нет доступа к информации об оборудовании или гипервизоре (хотя я понимаю, что он работает на платформе VMWare Enterprise). Файловая система - ext4. Назначение серверов - действовать как система шлюза, обеспечивающая легкую фильтрацию вирусов и спама до почтового сервера.

Снижение нагрузки ввода-вывода журнала sendmail

1) Вы отключили fsync файлов журнала после каждой записи журнала?

В /etc/syslog.conf предварительно добавленное имя файла журнала с -

mail.* -/var/log/mail

2) Вы можете рассмотреть возможность использования единого / централизованного сервера журналов для событий электронной почты [см. Комментарий Адамо]

rsyslogd поддерживает пересылку на основе TCP - http://linux.die.net/man/5/rsyslog.conf

Снижение нагрузки ввода-вывода на шлюзе "Интернет во внутренний"

Вы можете использовать «двойной интерактивный» режим доставки, чтобы уменьшить количество операций ввода-вывода. Это приведет к задержке отправки ACK в «последнюю точку» после выполнения попыток доставки. Это стоит учитывать при высокой доступности внутренних почтовых серверов.

define(`confDELIVERY_MODE',`interactive')
define(`confSAFE_QUEUE',`interactive')

"Настройка производительности Sendmail" Ник Кристенсон (раздел 3.2 «Синхронизация») дополнительно предлагает рассмотреть возможность увеличения буферов XF и DF при использовании режима «двойного взаимодействия».

define(`confXF_BUFFER_SIZE',`16384')dnl   16KB; default=4KB
define(`confDF_BUFFER_SIZE',`102400')dnl 100KB; default=4KB

Скорее всего, ваши запросы ввода-вывода milters тоже можно точно настроить.