Postfix-Leistung

Postfix-Leistung

Ich führe Postfix auf Ubuntu aus und versende täglich viele E-Mails (ca. 1 Million Nachrichten). Die Belastung ist extrem hoch, aber die CPU- und Speicherbelastung ist nicht groß. Kennt sich jemand mit einer ähnlichen Situation aus und weiß, wie man den Engpass beseitigt?

Alle E-Mails auf diesem Server sind ausgehend.

Ich würde davon ausgehen, dass der Engpass die Festplatte ist.

Nur ein Update, so sieht iostat aus:

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

Entsprechen diese Zahlen der Leistung, die Sie von einer einzelnen Festplatte erwarten würden?

sdb ist für Postfix vorgesehen.

Ich denke, es handelt sich um eine Warteschlangenverschiebung von eingehend->aktiv->zurückgestellt

Weitere Details aus den Fragen:

Server: Quad-Core Xeon(R) CPU E5405 @ 2,00 GHz mit 4 GB RAM

Durchschnittliche Auslastung: 464,88, 489,11, 483,91, 4 Kerne. Aber die Speicherauslastung und die CPU sind minimal

Postfix-Instanzen zwischen 16 und 32

Antwort1

Das mag etwas verrückt klingen, aber Sie sollten:

  1. Reduzieren Sie die Protokollierung auf das unbedingt erforderliche Minimum. Stellen Sie sicher, dass Syslog nur mail.err oder höher protokolliert.
  2. Fügen Sie mehr RAM hinzu. Ja, Postfix braucht das nicht, aber zusätzlicher RAM bedeutet zusätzlichen Seitencache für den Kernel.
  3. Sie haben nicht erwähnt, welches Dateisystem sich auf /dev/sdb befindet (was auch eine gewisse Rolle spielt), aber stellen Sie es auf jeden Fall auf um noatime, was die Belastung zumindest ein wenig reduzieren sollte.
  4. Überprüfen Sie, wie groß Ihr /var/spool/postfix ist. Wenn es weniger als ein paar Gigabyte groß ist, sollten Sie es auf eine Ramdisk verschieben.

Antwort2

Ich muss denen widersprechen, die vorgeschlagen haben, eine RAM-Disk für "/var/spool/postfix" zu verwenden. Das bedeutet, dass Ihre gesamte Mail-Warteschlange im RAM gespeichert wird. Wenn Ihr Server abstürzt oder die Stromversorgung unterbrochen wird, sind die Nachrichten in der Warteschlange für immer verloren. Das ist aus Sicht des Clients/Benutzers wirklich schlecht, da die Nachricht bereits erfolgreich zur Zustellung angenommen wurde. Schlimmer noch, Ihr Server sendet keine Benachrichtigung, dass eine E-Mail zurückgewiesen wurde oder nicht zugestellt werden konnte, da die Warteschlange leer sein wird, wenn der Server wieder hochfährt.

Stattdessen würde ich so viele schnelle Festplatten hinzufügen, wie Sie sich leisten können; ich kann anhand der gegebenen Informationen nicht wirklich abschätzen, wie viele Sie benötigen. Aus der obigen „iostat“-Ausgabe geht hervor, dass Sie ~ 120 IOPS für „sdb“ (Summe aus r/s und w/s) erzielen. Sie können vernünftigerweise abschätzen, dass eine einzelne 15k-RPM-SCSI- oder FC-Festplatte 150 IOPS verarbeiten wird. Ich würde mit 5 15k-RPM-SCSI-Festplatten und einem anständigen RAID-Controller beginnen. Richten Sie es als RAID-10 über 4 Laufwerke mit 1 Hotspare ein. Ich bin nicht sicher, ob dies Ihr Problem vollständig lösen wird, aber es wird es definitiv nicht verschlimmern.

Antwort3

Führen Sie Postfix unter einem Profiler (gprof?) aus oder sehen Sie in den Protokollen nach. Postfix protokolliert viele Zeitinformationen, die Ihnen möglicherweise Aufschluss über die Verzögerung geben. Häufige Stellen zum Nachschauen sind:

  1. Festplattenleistung. Es könnte Zeit für RAID-10 für Ihre Warteschlange sein.
  2. Jegliche Art von Netzwerk-E/A bei Nachrichten. DNS-Blacklists? SAV?
  3. Milter und andere Filter, die Sie installiert haben.
  4. Authentifizierung und UID-Suche werden über das Netzwerk oder einen Prozess (LDAP, SQL) durchgeführt.
  5. kein Proxy verwenden: für langsame Karten (wie die oben)

Antwort4

Es sieht definitiv so aus, als ob Ihr Festplattensubsystem zumindest als Teil des Problems betrachtet werden sollte. Aufgrund der Art und Weise, wie Postfix Dateien in /var verschiebt, würde ich vorschlagen, nach „ext3-Dateisystem optimieren“ zu googeln (zumindest Noatime und Writeback festlegen), um zu sehen, ob Sie die Leistung auf Dateisystemebene nicht steigern können.

Ich habe zwei Servercluster, die sowohl DNS als auch ausgehenden SMTP für an Kunden gerichtete E-Mails übernehmen und täglich 250.000 Nachrichten verarbeiten (2.000–10.000/Stunde), ohne dass die E/A-Bindung auch nur annähernd mit dieser Größenordnung zusammenhängt.

verwandte Informationen