Запуск postfix в Ubuntu, отправка большого количества писем (~ 1 миллион сообщений) в день. нагрузки чрезвычайно высоки, но не сильно с точки зрения загрузки процессора и памяти. Кто-нибудь в похожей ситуации и знает, как устранить узкое место?
Вся почта на этом сервере является исходящей.
Я должен был предположить, что узким местом является диск.
Просто обновление, вот как выглядит iostat:
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.12 99.88 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 12.38 0.00 2.48 0.00 118.81 48.00 0.00 0.00 0.00 0.00
sdb 1.49 22.28 72.28 42.57 629.70 1041.58 14.55 135.56 834.31 8.71 100.00
Соответствуют ли эти цифры производительности, которую можно ожидать от одного диска?
SDB посвящен постфиксу.
Я думаю, что это перетасовывание очереди, от входящих-> активный-> отложенный
Больше деталей из вопросов:
Сервер: Четырехъядерный процессор Xeon® E5405 @ 2.00GH с оперативной памятью 4 ГБ
Средняя загрузка: 464,88, 489,11, 483,91, 4 ядра. но использование памяти и процессор минимален
Постфиксы между 16 - 32
источник
Ответы:
Это может показаться немного сумасшедшим, но вы должны:
noatime
, что должно хотя бы немного снизить нагрузку.источник
Я должен не согласиться с теми, кто предложил использовать RAM-диск для "/ var / spool / postfix". Это означает, что вся ваша почтовая очередь будет храниться в оперативной памяти. Если ваш сервер выходит из строя или теряет питание, сообщения в очереди исчезают навсегда. Это очень плохо с точки зрения клиента / пользователя, потому что сообщение уже было успешно принято для доставки. Хуже того, ваш сервер не будет отправлять уведомление о том, что электронная почта отклонена или не может быть доставлена, потому что очередь будет пуста, когда сервер вернется.
Вместо этого я бы добавил столько быстрых дисков, сколько вы можете себе позволить; Я не могу точно оценить, сколько вам нужно с предоставленной информацией. Из вышеприведенного вывода «iostat» похоже, что вы делаете ~ 120 IOPS для 'sdb' (сумма r / s и w / s). Вы можете разумно оценить, что один диск SCSI или FC со скоростью 15 000 об / мин будет обрабатывать 150 IOPS. Я бы начал с 5 15000 об / мин дисков SCSI и приличного контроллера RAID. Установите его как RAID-10 на 4 накопителях с 1 горячим резервом. Я не уверен, что это полностью решит вашу проблему, но определенно не ухудшит ситуацию.
источник
Запустите postfix под каким-то профилировщиком (gprof?) Или посмотрите в логах. Postfix регистрирует много информации о времени, которая может сказать вам, где задержка. Общие места для поиска:
источник
iostat -x -v 3
чтобы проверить использование диска.Миллион сообщений в день - около 11 в секунду, при условии, что пропускная способность постоянна. Postfix сам по себе должен обрабатывать как минимум на порядок больше, чем на серверном оборудовании начального уровня. Поэтому я подозреваю, что у вас есть больше, чем просто запуск постфикса, или очень неравномерно распределенные пики пропускной способности.
Ваша ситуация, безусловно, выглядит как сильно связанный с вводом / выводом сервер. Этого следует ожидать с MTA, который должен делать множество небольших записей, чтобы гарантировать, что он не потеряет почту.
Потратьте время на настройку ввода-вывода на обоих
/var/spool/postfix
и/var/log
. Наилучшим практическим приемом для занятых постфиксных серверов является их разделение на разные шпиндели и обеспечение включения асинхронного ведения журнала. префикс имени файла журнала для вашего почтового журнала с дефисом в Linux.или похожие.
Если вы используете amavisd-new, убедитесь, что его рабочая область находится в файловой системе tmpfs. Мы обычно надеваем это
/tmp/vscan/
. Это безопасно, поскольку amavisd-new не возвращает ответ об окончании данных до тех пор, пока нисходящий (пост-фильтр) переход не примет сообщение.Некоторые люди рекомендуют
noatime
варианты монтирования для катушки с постфиксом. Это потенциально неразумно, поскольку postfix зависит от семантики файловой системы. Смотрите, например, http://archives.neohapsis.com/archives/postfix/2006-01/1916.html .источник
Похоже, что ваша дисковая подсистема, по крайней мере, должна рассматриваться как часть проблемы. Из-за того, что postfix перемешивает файлы вокруг / var, я бы предложил поискать «tweak ext3 filesystem» (по крайней мере, установив noatime и writeback), чтобы увидеть, не можете ли вы повысить производительность на уровне файловой системы.
У меня есть два кластера серверов, которые удваивают нагрузку на DNS и исходящий SMTP для предназначенной для клиентов электронной почты и запускают 250 000 сообщений в день (2–10 тыс. / Час), при этом ничего не приближая к такому типу ввода-вывода.
источник
Похоже, горлышко бутылки производительности хранения для меня.
Iowait 99,88 говорит вам, что ваша система тратит много времени на ожидание вашего хранилища.
Я согласен с Биллом Вайсом. Вы должны взглянуть на настройки raid10 для очереди.
источник
или начать с
"iostat 1", предложенный moshen, тоже хорош
из твоей статистики явно быстрее дисковая подсистема будет неплохо. raid-10 на дисках 6-8 15k rpm, может быть, с некоторым кешем, парой гигабайт памяти на плате.
смонтировать каталог спула с параметрами noatime, nodiratime. подумайте о настройке или изменении вашей файловой системы для обработки большого количества маленьких [я предполагаю] файлов.
источник
Брайан
Вам действительно нужно получить более быстрый диск или, предпочтительно, перейти на рейд-решение. Что это за сервер?
Джеймс
источник
Если вы используете amavis для фильтрации спама и вирусов, вам следует увеличить количество одновременных процессов amavis. В соответствии с вашими настройками вам может потребоваться увеличить как количество процессов smtp-amavis из postfix master.cf, так и соответствующий параметр в amavis.conf.
источник
Сколько ядер в коробке и какова фактическая загрузка? Какова реальная скорость отправки сообщений?
Как и большинство, моя первая мысль - это диск, так что проверь это.
Однако причиной может быть использование сети, а также высокая нагрузка прерывания (плохая карта?), Поэтому проверьте это. Я обнаружил, что даже для скромного почтового сервера наличие быстрого кэширующего DNS-сервера (я неравнодушен к «несвязанному») в одном блоке помогает снизить задержки и нагрузку на сеть.
источник
когда вы выполняете 630 операций чтения и 1042 записи в секунду, я определенно предлагаю увеличить объем памяти в системе (чтобы лучше обрабатывать ОС и оперативную память), а затем сделать папку postfix виртуальным диском.
Также предложил бы поместить ваши почтовые журналы на их собственный раздел, если не на их собственный диск целиком.
источник
Это не проблема ввода-вывода, это проблема конфигурации постфикса. Вы просите его сделать слишком много всего сразу и создаете узкое место для себя. Проверьте постфиксные настройки производительности риде и / или опубликовать main.cf , чтобы мы могли помочь.
источник
Похоже, у вас есть хитрый диск. Ваш сервер выполняет только 72 запроса на чтение / сек и 42 записи / сек. Мой настольный жесткий диск Seagate 7200 об / мин может выполнять более 100 произвольных запросов чтения / записи в секунду и при этом справляться с этим.
Попробуйте установить катушку на sda и посмотрите, станет ли нагрузка лучше.
Но прежде, чем вы добавите больше денег на диск, сделайте следующее:
Запустите qshape active, qshape deferred и qshape входящие и сообщите нам общее количество каждой команды.
Необычно большое количество почты в отложенной очереди означает, что спаммер может использовать ваш почтовый сервер для передачи своего спама (например, отправка электронной почты на несуществующий домен, что заставит ваш постфикс повторять попытки снова и снова).
Убедитесь, что ваш почтовый сервер не находится в черном списке ( http://www.mxtoolbox.com/blacklists.aspx )
Проверьте время отклика DNS и запустите локальный кеш DNS.
Почтовый сервер использует DNS довольно интенсивно. Do
dig somedomain.com mx
Run это через несколько различных хостов. Обычно время отклика должно быть менее 100 - 400 мс. Если вы получите более высокий отклик, ваш DNS может не работать хорошо. Попробуйте другой DNS (вы можете попробовать Google 8.8.8.8 или OpenDNS: 208.67.222.222)Проверьте свою сеть. (например, ifconfig) и посмотреть, сколько пакетов ошибок. Проверьте, насыщена ли ваша ссылка или имеет форму. Проверьте, не было ли большого количества тайм-аутов в почтовых журналах. Сделайте tcpdump и убедитесь, что пакеты не теряются и не передаются повторно.
Можете ли вы сказать нам, реагирует ли консоль (например, когда вы набираете какую-то команду, как быстро система дает вам обратную связь)?
Обычно проблема с сетью (например, DNS) приводит к стремительному росту нагрузки, но система все еще реагирует.
источник