Closed falco-knapp closed 8 years ago
Hallo Falco, wir prüfen das gerade. Danke für die Info.
Warten auf Feedback in Issue: https://github.com/Inxmail/inx_magento1/issues/25
Ich habe diesen Fall in der Version 3.1.0.4 getestet und genau dies beobachtet:
Status Vorher:
Cronjob für Abmeldungen wird ausgeführt. Die Empfänger in Magento die Abgemeldet werden werden erneut in Inxmail abgemeldet:
Status Nachher:
Das Problem hier sollte auch mit Commit f27d5720cf28e4199fb6c40803845c9800f6644d erledigt sein. Wir bräuchten hier einen Test mit vielen Daten um entscheiden zu können ob hier am Speed noch gearbeitet werden muss. Oder könnte Ihr das machen @falco-knapp ? Ansonsten müssten wir wohl einfach zufällig Daten generieren und die in unseren Test-Account pushen. Bitte um Info.
Ich kann den Test durchführen. Ich habe bereits einen Testmandanten mit sehr vielen Empfängern und kann die Resultate dann hier einbringen.
Die Abmeldungen werden in 3.1.0.6 wieder in Magento übernommen.
3.1.0.4 Test mit ~ 150k abmeldungen in Inxmail und ca 110 Empfänger die in Magento abzumelden sind (Insgesamt nur 110 Empfänger in Magento) 2015-11-17 12:57:01 --> 2015-11-17 13:09:56, Dauer: 12:55
Änderung der Laufzeit, wenn die Empfänger in Magento bereits abgemeldet sind: 2015-11-17 12:33:01 -> 2015-11-17 12:44:58: Dauer: 11:57 2015-11-17 13:09:56 -> 2015-11-17 13:22:01, Dauer: 12:05
3.1.0.6 gleiche Bedingungen: 2015-11-23 13:25:01 --> 2015-11-23 13:40:56, Dauer: 15:55 2015-11-23 13:57:02 --> 2015-11-23 14:12:47, Dauer: 15:45
Änderung der Laufzeit, wenn die Empfänger in Magento bereits abgemeldet sind: 2015-11-23 15:09:01 --> 2015-11-23 15:23:09, Dauer: 14:08
Die Performance hat sich also scheinbar leicht verschlechtert (um ca. 16%)
Wenn die Empfänger in Magento bereits abgemeldet sind und dadurch nicht erneut durch den Observer abgemeldet werden, so ändert sich die Laufzeit lediglich um ca 1 Minute. D.h. das Optimierungspotential liegt zwischen 5 - 8% wenn die Observer-Logik verbessert wird, wobei das sehr stark vom Mengengerüst abhängt.
Hallo Falco, bist du dir sicher das eure API bei beiden Test in der gleichen Geschwindigkeit geantwortet hat? Also können wir das als schwankenden Faktor ausschließen?
Ansonsten natürlich die Frage ob wir dann hier noch nach Optimierungspotential schauen sollen?
Ich werde morgen nochmal beide Versionen nacheinander Testen um das soweit wie möglich auszuschließen.
Ich würde erstmal noch nicht effektiv nach Optimierungspotential suchen und die Messungen von morgen nochmal abwarten.
Was ich auf jeden Fall beobachte: Ein Cronjob der jede volle Stunde ausgeführt wird, obwohl alles ausgestellt ist in Backend-Config:
| 5897 | dndinxmail_subscriber_synchronize_unsubscribed | success | NULL | 2015-11-23 15:57:02 | 2015-11-23 16:00:00 | 2015-11-23 16:00:02 | 2015-11-23 16:17:11 | | 5960 | dndinxmail_subscriber_synchronize_unsubscribed | pending | NULL | 2015-11-23 16:56:02 | 2015-11-23 17:00:00 | 2015-11-23 17:00:01 | NULL |
Hallo Björn,
dieser Cronjob der immer ausgeführt wird ... wie kommt der zustande?
Danke und Gruß,
Falco
Ich versuche die Frage selbst zu beantworten:
Heutiger Test zwischen 3.1.0.4 und 3.1.0.6:
3.1.0.6: alle Empfänger in Magento sind bereits abgemeldet, nur 1 Storeview. ~ 150k abmeldungen in Inxmail und entsprechend ~107 in Magento (abgemeldet): 2015-11-24 08:39:01 --> 2015-11-24 08:51:08, Dauer: 12:07 24.11.2015 10:04:01 --> 24.11.2015 10:16:50, Dauer: 12:49
3.1.0.4: alle Empfänger in Magento sind bereits abgemeldet, nur 1 Storeview. ~ 150k abmeldungen in Inxmail und entsprechend ~107 in Magento (abgemeldet): 2015-11-24 09:19:01 --> 2015-11-24 09:29:14, Dauer: 10:13 2015-11-24 09:39:01 --> 2015-11-24 09:48:57, Dauer: 09:65
Ich denke, dass somit mit hoher Wahrscheinlichkeit die API Responsezeiten selbst nicht schuld an der leichten Verschlechterung sind.
Das Fehlverhalten der Cronjobs konnte ich auch in Version 3.1.0.4 beobachten. Daher ist dies kein Folgefehler der Anpassungen hier. Ich werde für diesen Fehler ggfls. ein separates Ticket öffnen.
@bjoern-flagbit: Gibt es eine Erklärung, warum die Performance sich verschlechtert haben könnte?
Die Erklärung scheint zu sein das wir die Empfänger jetzt abhängig vom Store holen und das es auf dieser Tabelle in Magento keinen Index gibt und es deshalb langsamer ist als vorher. Es gibt quasi ein zusätzliches Select welches nur die Empfänger eines bestimmten Stores holt. Unten noch das genaue Feedback von Alex in English.
Feedback von Alex
I think at least one of the reasons is that we load subscriptions by few fields and magento loads them by only one field that has index, but there are no composite indexes for subscription table in default magento. We can try to add composite indexes for "newsletter_subscriber" table, such as:
- customer_id, store_id
- subscriber_email, store_id
Ok, danke für den Hinweis. Für 3.1.0.6 werden wir dies aber nicht weiter optimieren. Damit ist dieses Ticket erstmal getestet und ich schließe es daher.
Der Unsubscription Cronjob funktioniert nicht mehr korrekt seit der Version 3.1.0.5. Abmeldungen in Inxmail werden nicht mehr berücksichtigt.
In den Versionen 3.1.0.3 und 3.1.0.4 funktionierte diese Funktionalität noch.
Zusätzliche Analyse:
Darüber hinaus scheint der Cronjob sehr langläufig zu sein. Ein Kunde hat eine Magento-Liste mit 350k Empfängern und 150k Abmeldungen. Laut Aussage benötigt der Cronjob 30 Minuten. Dabei ist der Shop in Australien und der Inxmail Server in Deutschland. Es gibt nun folgende Hypothesen:
Der Cronjob Code macht irgendwas falsch. Ich habe die Befürchtung, dass durch den Aufruf if ($subscriber->isSubscribed()) { $subscriber->unsubscribe(); }
Der Observer ausgeführt wird und dadurch erneut der Empfänger in Inxmail abgemeldet wird. Ich habe den Cron job wie folgt interpretiert:
Stimmt das Diagramm und die Hypothese, dass der Observer erneut ausgeführt wird?
Fehlerbeschreibung
In Version 3.1.0.4 und früher führte eine Abmeldung in Inxmail (in einer Gruppen-Liste oder in einer Basis-Liste) dazu, dass dieser Empfänger in Magento als "abgemeldet" gekennzeichnet wurde. Die Änderung führte anschließend dazu, dass der Benutzer durch den Observer auf jeden Fall von der Basis-Liste gelöscht wurde. In Version 3.1.0.5 werden die Empfänger überhaupt nicht mehr als "abgemeldet" gekennzeichnet.