Performanceprobleme beim Versand
Moderator: mirko
Re: Performanceprobleme beim Versand
Der Cache ist immer aktiviert, außer man macht das Häkchen wissentlich raus. Screenshot anbei.
- Dateianhänge
-
- Bild1.png (6.54 KiB) 639 mal betrachtet
Re: Performanceprobleme beim Versand
Hier, denke ich, kann ich was rausholen. Ich habe mal geschaut, aber keine Einstellung bzgl Cache in den Einstellungen gefunden. Wo finde ich die? Die Mailings haben tatsächlich einige eingebettete Grafiken, die laut Kunde natürlich auf keinen Fall extern nachgeladen werden dürfen, weil man dann im Outlook noch nen Kopf drücken muss.mirko hat geschrieben: Prinzipiell sind E-Mails mit großen eingebetteten Bildern und Anhängen schlecht, denn die Codierung dieser Anhänge dauert abhängig von der Größe sehr lange, deswegen sollte der Cache beim E-Mailing aktiviert bleiben, er hält dann im Speicher die codierten Anhänge für die nächste E-Mail. Man sollte auch nicht mehrere E-Mailings auf einmal schicken, weil er bei einem Wechsel des E-Mailings den ganzen Cache löschen die Bilder/Anhänge neu codieren muss.
Bis hierhin vielen Dank

Re: Performanceprobleme beim Versand
Der macht im Hintergrund eine Zeitprüfung, der Aufruf ist immer nur 1x pro Minute möglich. Wenn der letzte Scriptaufruf z.B. 1,5 Minuten dauerte, dann schreibt er am Ende in seine Datenbank diese Zeit, ist beim nächsten Aufruf die Minute nicht um, dann macht er nichts, erst beim nächsten Aufruf wieder. Es kann damit also sein, dass er mal eine Aufgabe anstatt der eingestellten 1 Minute nur alle 2 Minuten macht, weil halt die Zeitberechnung dies so ergibt.
Das Ereignisprotokoll Menü Einstellungen - Ereignisprotokoll anschauen, wenn es alte Einträge mit Sanduhr gibt, dann gab es an der Stelle einen Scriptabbruch z.B. weil zu viele E-Mails für den Versand eingestellt sind oder die E-Mail riesen groß ist. Ist es ein aktueller Eintrag mit Sanduhr, dann macht er das natürlich gerade. Gab es einen Scriptabbruch, dann wartet er rund 20 Minuten, ab PHP 5.2 wartet er nicht mehr, sondern setzt normal fort, weil das error-Handling korrekt in der Datenbank das Ende der Ausführung noch schreiben kann.
Prinzipiell sind E-Mails mit großen eingebetteten Bildern und Anhängen schlecht, denn die Codierung dieser Anhänge dauert abhängig von der Größe sehr lange, deswegen sollte der Cache beim E-Mailing aktiviert bleiben, er hält dann im Speicher die codierten Anhänge für die nächste E-Mail. Man sollte auch nicht mehrere E-Mailings auf einmal schicken, weil er bei einem Wechsel des E-Mailings den ganzen Cache löschen die Bilder/Anhänge neu codieren muss.
Das Ereignisprotokoll Menü Einstellungen - Ereignisprotokoll anschauen, wenn es alte Einträge mit Sanduhr gibt, dann gab es an der Stelle einen Scriptabbruch z.B. weil zu viele E-Mails für den Versand eingestellt sind oder die E-Mail riesen groß ist. Ist es ein aktueller Eintrag mit Sanduhr, dann macht er das natürlich gerade. Gab es einen Scriptabbruch, dann wartet er rund 20 Minuten, ab PHP 5.2 wartet er nicht mehr, sondern setzt normal fort, weil das error-Handling korrekt in der Datenbank das Ende der Ausführung noch schreiben kann.
Prinzipiell sind E-Mails mit großen eingebetteten Bildern und Anhängen schlecht, denn die Codierung dieser Anhänge dauert abhängig von der Größe sehr lange, deswegen sollte der Cache beim E-Mailing aktiviert bleiben, er hält dann im Speicher die codierten Anhänge für die nächste E-Mail. Man sollte auch nicht mehrere E-Mailings auf einmal schicken, weil er bei einem Wechsel des E-Mailings den ganzen Cache löschen die Bilder/Anhänge neu codieren muss.
Re: Performanceprobleme beim Versand
Hallo Mirko,
ich habe bei den Mailings im Punkte Versand 500 Mails eingetragen. Im Versandprotokoll finde ich dann auch pro Minute diese 500 Mails. Wenn ich der Zeit im Protokoll vertrauen kann, braucht der dafür eine Sekunde. Die nächsten 500 werden aber erst 2 Minuten danach vorbereitet laut Zeitstempel im Versandprotokoll, wieder alle 500 innerhalb einer Sekunde.
Im Mailserver-Log kommen davon aber nur ca 180 in der ersten Minuten an, in der zweiten Minuten ca 20, dann eine Minute Pause. Dann wieder ca 180, dann 20, dann eine Minute Pause.
Wenn ich dem Versandprotokoll glauben darf, sollte die Ausgangsqueue gut gefüllt sein, der Postfix dreht auch Däumchen, die CPU idelt. Wo ist der Falschenhals?
ich habe bei den Mailings im Punkte Versand 500 Mails eingetragen. Im Versandprotokoll finde ich dann auch pro Minute diese 500 Mails. Wenn ich der Zeit im Protokoll vertrauen kann, braucht der dafür eine Sekunde. Die nächsten 500 werden aber erst 2 Minuten danach vorbereitet laut Zeitstempel im Versandprotokoll, wieder alle 500 innerhalb einer Sekunde.
Im Mailserver-Log kommen davon aber nur ca 180 in der ersten Minuten an, in der zweiten Minuten ca 20, dann eine Minute Pause. Dann wieder ca 180, dann 20, dann eine Minute Pause.
Wenn ich dem Versandprotokoll glauben darf, sollte die Ausgangsqueue gut gefüllt sein, der Postfix dreht auch Däumchen, die CPU idelt. Wo ist der Falschenhals?
Re: Performanceprobleme beim Versand
Wenn man per CronJob versenden lässt, dann kann er das nur wenn auch genügend E-Mails für den Versand vorhanden sind.
Für das jeweilige E-Mailing gibt man unter "Versand" unten bei "Anzahl E-Mails, die auf einmal für den Versand vorbereitet bzw. beim Live-E-Mail-Versand versendet werden sollen" an, wie viele E-Mails er bei jedem CronJob-Aufruf vorbereiten soll. Dieses Vorbereiten ist ein Schreiben in die Ausgangsqueue, aus der Ausgangsqueue werden danach die E-Mails wirklich übermittelt. Gibt man z.B. an vorzubereitende E-Mails 10 und unter Menü Einstellungen - Optionen, Registerkarte E-Mail-Versand 100 E-Mails versenden, dann kann er die 100 die nicht schicken, weil nur 10 in der Ausgangstabelle liegen.
Will man hohe Performance, dann sollte man die Anzahl vorzubereitender E-Mails hoch setzen aber nicht zu hoch, so dass das Script dabei abbricht z.B. ein relativ guter Server 1000 Stück, sollte klappen. In die Ausgangsqueue werden nur IDs geschrieben, das kostet damit nicht viel Speicherplatz, kann man also richtig voll machen. Wenn er alle E-Mails vorbereitet hat, dann muss er die zeitaufwändig SQL-Abfragen inkl. Abgleich mit den Blocklisten nicht mehr machen, damit hat er mehr Zeit um die E-Mails aus der Ausgangsqueue rauszuschicken. Als Admin kann man unter Menü Einstellungen - Ausgangsqueue die E-Mails in der Ausgangsqueue auch anschauen. Sind dort keine E-Mails drin, hat er alle E-Mails versendet, er würde damit beim nächsten Scriptaufruf nichts mehr machen, außer es werden wieder neue vorbereitet.
Für das jeweilige E-Mailing gibt man unter "Versand" unten bei "Anzahl E-Mails, die auf einmal für den Versand vorbereitet bzw. beim Live-E-Mail-Versand versendet werden sollen" an, wie viele E-Mails er bei jedem CronJob-Aufruf vorbereiten soll. Dieses Vorbereiten ist ein Schreiben in die Ausgangsqueue, aus der Ausgangsqueue werden danach die E-Mails wirklich übermittelt. Gibt man z.B. an vorzubereitende E-Mails 10 und unter Menü Einstellungen - Optionen, Registerkarte E-Mail-Versand 100 E-Mails versenden, dann kann er die 100 die nicht schicken, weil nur 10 in der Ausgangstabelle liegen.
Will man hohe Performance, dann sollte man die Anzahl vorzubereitender E-Mails hoch setzen aber nicht zu hoch, so dass das Script dabei abbricht z.B. ein relativ guter Server 1000 Stück, sollte klappen. In die Ausgangsqueue werden nur IDs geschrieben, das kostet damit nicht viel Speicherplatz, kann man also richtig voll machen. Wenn er alle E-Mails vorbereitet hat, dann muss er die zeitaufwändig SQL-Abfragen inkl. Abgleich mit den Blocklisten nicht mehr machen, damit hat er mehr Zeit um die E-Mails aus der Ausgangsqueue rauszuschicken. Als Admin kann man unter Menü Einstellungen - Ausgangsqueue die E-Mails in der Ausgangsqueue auch anschauen. Sind dort keine E-Mails drin, hat er alle E-Mails versendet, er würde damit beim nächsten Scriptaufruf nichts mehr machen, außer es werden wieder neue vorbereitet.
Performanceprobleme beim Versand
Hallo,
ich betreue eine SWM Installation, wo Mailings in der Größenordnung von 20-50.000 Empfänger versendet werden. Der Versand von letztens 26000 Mails hat über 6 Stunden gedauert. Ich suche nun nach Möglichkeiten, den Versand zu beschleunigen. Im Moment sieht die Konfig so aus, dass SWM die Mail an den lokal installierten Postfix ausliefert und der sich um alles weitere kümmert.
SWM soll pro Cronjob-Aufruf 500 Mails versenden. Im Versandprotokoll stehen auch 500 Mails pro Minute, die dort prozessiert werden (ich schreibe absichtlich nicht versendet, weil dem nicht so ist)
Im Logfile des Postfix sehe ich aber nur ca 180 Mails, die bei einem Cronjob Aufruf an den Postfix übergeben werden. Wenn ich jede einzelne Mail checke, sehe ich, dass sie noch in der gleichen Sekunde mit status=send weitergereicht wird, es laufen also keine Queues im Postfix voll. Die CPU Auslastung ist während des Versands auch mäßig. Eine Mail ist dabei ca 300kb groß.
Nun stellt sich mir die Frage, wenn laut SWM-Versandprotokoll 500 Mails prozessiert werden, beim Mailer aber wesentlich weniger ankommen, wo bleiben die Mails? Ich versuche den Flaschenhals zu finden, um den Versand daraufhin zu optimieren, finde aber nichts und der Quellcode nützt mir Dank obfuscation ja auch nichts.
Es wäre nett, wenn ich Hinweise bekäme, wie ich den Prozess beschleunige, weil in zwei Wochen wieder ein 50.000 Empfänger Mailing ansteht und mir die Kunden auf den Füßen stehen, wieso das so langsam ist.
Mit freundlichem Gruß
Sascha
ich betreue eine SWM Installation, wo Mailings in der Größenordnung von 20-50.000 Empfänger versendet werden. Der Versand von letztens 26000 Mails hat über 6 Stunden gedauert. Ich suche nun nach Möglichkeiten, den Versand zu beschleunigen. Im Moment sieht die Konfig so aus, dass SWM die Mail an den lokal installierten Postfix ausliefert und der sich um alles weitere kümmert.
SWM soll pro Cronjob-Aufruf 500 Mails versenden. Im Versandprotokoll stehen auch 500 Mails pro Minute, die dort prozessiert werden (ich schreibe absichtlich nicht versendet, weil dem nicht so ist)
Im Logfile des Postfix sehe ich aber nur ca 180 Mails, die bei einem Cronjob Aufruf an den Postfix übergeben werden. Wenn ich jede einzelne Mail checke, sehe ich, dass sie noch in der gleichen Sekunde mit status=send weitergereicht wird, es laufen also keine Queues im Postfix voll. Die CPU Auslastung ist während des Versands auch mäßig. Eine Mail ist dabei ca 300kb groß.
Nun stellt sich mir die Frage, wenn laut SWM-Versandprotokoll 500 Mails prozessiert werden, beim Mailer aber wesentlich weniger ankommen, wo bleiben die Mails? Ich versuche den Flaschenhals zu finden, um den Versand daraufhin zu optimieren, finde aber nichts und der Quellcode nützt mir Dank obfuscation ja auch nichts.
Es wäre nett, wenn ich Hinweise bekäme, wie ich den Prozess beschleunige, weil in zwei Wochen wieder ein 50.000 Empfänger Mailing ansteht und mir die Kunden auf den Füßen stehen, wieso das so langsam ist.
Mit freundlichem Gruß
Sascha