DanielXDanielX MemberComments: 7 Received thanks: 2 Member since: September 2017 edited October 14

Hallo!

Habe in einer Staging-Umgebung eine Shopware-Installation von 5.4.4 auf 5.5.10 aktualisiert. (Höher geht leider nicht aufgrund fehlendem MySQL 5.7 bei DomainFactory).

Hat alles soweit gut geklappt, nur wenn ich im Backend die Kundenliste aufrufe, braucht er beim ersten Aufruf der Liste sehr lange, ca. 50 Sekunden.
Bei erneutem Aufruf lädt die Liste dann ganz normal, vermutlich weil der MySQL-Cache dann greift.

Im Logfile hab ich keine Fehler gefunden, aber im MySQL Slow Query Log wird mir der SQL-Aufruf der Kundenliste angezeigt.

Query-Zeit: 00:00:54
Zeilen gesendet: 20
Zeilen verarbeitet: 324516

SELECT DISTINCT s0_.id AS id_0, s1_.name AS name_1, s2_.description AS description_2, s3_.countryname AS countryname_3, s0_.id AS id_4 FROM s_user s0_ 
        LEFT JOIN s_core_shops s1_ ON s0_.subshopID = s1_.id 
        LEFT JOIN s_user_addresses s4_ ON s0_.default_billing_address_id = s4_.id 
        LEFT JOIN s_core_countries s3_ ON s4_.country_id = s3_.id 
        LEFT JOIN s_user_attributes s5_ ON s0_.id = s5_.userID 
        LEFT JOIN s_core_customergroups s2_ ON s0_.customergroup = s2_.groupkey 
        ORDER BY s0_.id DESC LIMIT 18 OFFSET 0

Die Tabellen an sich sehen normal aus, es sind auch alle entsprechenden Indexe gesetzt. Von der Anzahl der Datensätze her, würd ich sagen ist das auch ganz normal:
s_user = ca.  50.000
s_core_shops = 1
s_core_customergroups = 2
s_core_countries = 251
s_user_addresses = ca 59.000
s_user_attributes = ca 6.900

Als Test habe ich den SQL-Befehl mal zerlegt um den Übeltäter zu lokalisieren und sobald ich folgende Zeile entferne läuft die Abfrage direkt durch:
        LEFT JOIN s_core_customergroups s2_ ON s0_.customergroup = s2_.groupkey

Aber sowohl s_user.customergroup als auch s_core_customergroups.groupkey haben einen Index gesetzt. Bei den Feld s_core_customergroups.groupkey gibt es auch keine seltsamen Einträge, jeweils nur die beiden Werte EK (Shopkunden) bzw. H (Händler)

Wenn ich die gleiche SQL-Abfrage statt über den Staging-Shop über den Live-Shop laufen lasse, braucht er auch ca. 50 Sekunden, was naheliegt das die Abfrage sich bei Shopware geändert hat.
Hilfreich wäre noch zu wißen, wo die Abfrage im Core in welcher Datei steht, dann könnte ich überprüfen ob sich was bei der Abfrage innerhalb von Shopware geändert hat. ​Aber da hab ich keine Ahnung, wo das genau zu suchen wäre.

Im Issue-Tracker hab ich auch schon mal geschaut, aber nichts passendes gefunden.

Aber so langsam bin ich mit meinem Latein am Ende und weiß nicht was ich noch überprüfen könnte.

Gibt es hier vielleicht noch ein Tipp was man testen bzw. prüfen könnte? Vielleicht ist es auch ein reines MySQL-Performance-Problem bei DomainFactory?

 

Answers

  • raymondraymond MemberComments: 749 Received thanks: 89 edited October 14 Member since: May 2015

    Kurios: wir sind auch (noch) bei Domainfactory und haben vor kurzem von 5.3.7 auf 5.5.10 umgestellt. Keine Performanceprobleme. MySQL 5.6 ist bei uns, wie bei dir, auch im Einsatz.

    Ich an deiner Stelle würde auch kurz oder mittelfristig einen neuen Hoster wählen (Partner Liste auf der Shopware Seite) und per Backup wieder auf 5.4 (jedenfalls auf produktiv) gehen. Auf Staging dann in Ruhe die neue Version testen.

    Also ich wüsste nicht woran es liege könnte: könnte nur rumstochern: Wir sind auf PHP 7.2 im gleichem Zuge gegangen. Vielleicht löst das auch dein Problem. Einstellungen > Cache Performance > Start > ist auf Produktiv gestellt?

Sign In or Register to comment.