Seitenladegeschwindigkeit in Kategorien

Hallo,

wir haben unseren Shopware 6 Shop fast fertig, die Produkte wurden aus SW5.6 migriert.

Nun haben wir direkt nach der Migration (alle indexierungen sind abgeschlossen seit Tagen) das Problem, dass die Ladegeschwindigkeit der Kategorien sehr schlecht sind.
Wenn man eine Seite aufruft, dann sind 3-15 Sekunden normal.
Wenn ich die Seite direkt reloade, dann fällt die Seitenladezeit auf knapp 600ms, der Wert ist super.
Der Wert unter 1 Sekunde bleibt auch nach mehrmaligen Reload, aber dann passiert es wieder zwischendurch, das die Ladezeit auf mehrere Sekunden steigt.

Wir haben schon folgendes probiert:

  • Standardtemplate aktiviert
  • Alle Plugins deaktiviert
  • Alle unsere Cronjobs (meist API Anfragen) deaktiviert
  • Admin Worker deaktiviert
  • Messenger Queue über Cronjob laut Doku alle 10 Minuten
  • Scheduled Task auch via Cronjob alle 10 Minuten wie in der Doku beschrieben
  • Cache wird jede Nacht geleert und neu aufgewärmt

Leider brachte gar nichts einen Erfolg.

Hauptverantwortlich schient der TTFP Wert.
Wir haben alles vom Hoster prüfen lassen, dort sind keine Performanceprobleme ersichtlich. Unser SW5 Shop läuft mit Ladezeiten <1 Sekunde rund.

Was auch im Wasserfalldiagramm auffällig erscheint, sind die Filter. Auch diese haben wir deaktiviert im Backend, brachte auch keinen Erfolg:


Mir gehen nun die Ideen aus.

Da die Seitenladegeschwindigkeit in den Kategorien hier schon das eine und andere Mal Thema waren, kann mir vielleicht jemand mit seiner Erfahrung helfen.
Wir haben derzeit die Version 6.4.10.1 laufen und aus den eben erwähnten Themen sollte das Problem mit einem früheren Update schon behoben sein.

Über ein paar Tipps würde ich mich sehr freuen, damit wir bald mit Shopware 6 an den Start gehen können!

Schönen sonnigen Tag euch!

Hört sich für mich so an, also ob der Template-Cache gebildet wird in der Zeit, in der es so lange dauert. Die Frage ist wieso. Viele Konfigurationen oder…

Wenn du den Cache aufräumst, ist die Wartezeit dann auch vorhanden?

Meinst du über php bin/console cache:clear?
Ja, das bringt keine Änderung.

In dieser Datei: all.js wird auch jedes Mal ein Filter geladen:
filter?only-aggregations=1&reduce-aggregations=1&slots=a430cacbc1504bcc8bbd98eb7348ca8c

Hier sind alle Hersteller zu finden, Preis, Bewertunge, Versandkostenfrei.
Das sind ja exakt die Filter, die man in den Einstellungen vom Layout in den Kategorien deaktivieren kann.
Nur wenn man diese deaktiviert, passiert eben nichts. Sie werden weiterhin geladen:

Auch wenn man die Filter im emplate ausblendet, sie werden trotzdem geladen.
Und dieser Aufruf braucht auch schon extrem lang. Ich denke, das dort der Flaschenhals ist, aber man bekommt diese Filter nicht weg, sie sind ja sogar im Standardtemplate immer da.

Ohne es zu wissen, ich schätze, dass die Filter im Frontend lediglich ausgeblendet werden. Auch ohne die Filter werden die Daten unter Umständen irgendwo verwendet. Ist aber nur eine Vermutung.

Nein, ich meinte Aufwärmen heißt vermutlich warmup in der console. Im Backend kann man das aber auch antriggern.

Wenn ich warmup in der Console mache, dann wird es ein wenig besser.
Nun habe ich Ladezeiten von 4 Sekunden in den Kategorien, nach mehrmaligen Reload 0,5 Sekunden, nach ein paar Sekunden dann wieder 4-6 Sekunden.
Produktseiten sind einheitlich bei 1 Sekunde.

Filter konnten wir rauswerfen, brachte auch keinen Unterschied. Jetzt ist es aber zumindest nur noch der TTFB Wert, leider, da hat man ja kaum Ansatzpuntke.

Das ist ein „normales“ Verhalten, sobald die Seite einmal generiert wurde, wird diese wirklich schnell aus dem Cache abgerufen.

Die Filter werden „nur“ ausgeblendet - es macht keinen Unterschied ob 20 Filter sichtbar oder unsichtbar sind. (Die SQL-Abfragen sind recht performant, also unter 1 Sek, jedoch sind 20 Abfragen á 1 Sek auch 20 Sek.)

Wieviele Filter / Varianten hast du?

Das eigentliche Problem sehe ich an anderer Stelle - ich war bis jetzt nicht in er Lage die Cache-Zeiten zu verändern - obwohl als TTL 86400 Sekunden (24 Stunden) hinterlegt wurden wird dieser Wert ignoriert.
Nach zwei Stunden liegen die Seiten zwar noch im Cache, jedoch werden diese neu generiert inkl. der Wartezeit.

Mit freundlichen Grüßen

In der Datenbank wird mir noch folgendes angezeigt:

Der Slow Queries Log zeigt keine Auffälligkeiten.

Slow Queries wird dir etwas anzeigen, wenn du den Wert auf 0.2 bis 0.5 Sek setzt - so lang brauchen diese (bei mir) im Schnitt.

Aktive Filter haben ich zur Zeit 2.

Varianten ca. 50.000 (Etwa 4000 Hosen unterteilt in Größen und Längen).
Also wir sind ein sehr, sehr kleiner Shop. Ein kleiner Einzelhändler.

Moin!

Nur mal als Zwischenfrage: Ist der Shop in der .env Datei auf „prod“ gesetzt? Kann man ja gerne mal übersehen :slight_smile:

Und ich würde überlegen, ob es wirklich Sinn ergibt, den Cache jede Nacht zu clearen, denn genau dieser ist ja eigentlich dazu da, die Ladezeiten zu vermeiden! Wir haben sowas bisher nicht verwendet…

LG:LA

Ja, die .env ist auf prod gestellt.

Ich habe den Wartungsmodus mal deaktiviert.

Dass der Cache jede Nacht aufgewärmt erden sollte, stand irgendwo in der Dokumentation. Ich hatte anfangs auch das Gefühl, ohne, dass du den Shop dann gar nicht mehr benutzen kannst.

Hast Du bestimmte Kategorien, bei denen das Problem auftritt? Ich hab gerade durchgeklickt, ohne dass es zu krassen Ladezeiten gekommen ist, alles im Rahmen von meiner Seite aus.

Das mit der Doku ist dann natürlich so :joy:
Wir haben halt bei uns keine schlechte Erfahrungen gemacht, bisher. Und wir betreuen inzwischen auch mehrere SW6-Shops, daher mein Gedanke.

LG;LA

Ja, teilweise läuft es alles sehr gut.

Ich kann das Problem hauptsächlich bei den „oberen“ Kategorien ausmachen, also Mode für Damen, Mode für Herren, dann die darunter Jeans für Damen, Jeans für Herren. Danach wird es besser.

Dein Gedanke ist gut. Warum ist das bei den oberen Kategorien so schlimm und weiter nach unten wirds besser…?

Bereits besuchte Seiten kommen wirklich etwas träge.

Was hast du für einen Server // Cache // Redis etc. ?

Nach „unten“ wird es besser, da weniger „Gemeinsamkeiten“ ermittelt werden müssen bzw. die Filter werden kleiner bzw. liefern schneller identische Ergebnisse. (SQL 0.1 Sek statt 0.76 Sek etc.)

1 „Gefällt mir“

Das ist ein WebServer Dedicated Basic SSD von Host Europe. Apache.
Bezüglich Cache kenne ich mich viel zu wenig aus:

Laut Host Europe ist auch alles bestens konfiguriert auf dem Server und dieser macht keine Probleme.
Was kann ich euch da noch für Angaben geben?

Bzgl. Verbindungen der Produkte auf den oberen Kategorien:
Bei Mode für Damen zB ist kein einziges Produkt der Kategorie zugewiesen.

Ich konnte das Phänomen inzwischen beobachten.

Ich würde mich da an Teddy’s Antwort hängen, je höher man in der Ebene ist, desto mehr Kombinationen werden errechnet. Das trifft auch auf die Damen-Kategorie zu, da alle Produkte der Sub-Kategorien auch in der Hauptkategorie gezeigt werden. Sie sind zwar im Storefront ausgeblendet, aber von der DB geholt und berechnet werden sie ja trotzdem, solang dies nicht explizit im Code geändert wurde.
Das sieht man ganz gut daran, weil auch auf der Damen-Mode Seite ein Filter-Panel in der Sidebar ist.

Host-Europe hat im Standard OPCache aktiviert - das ist auch gut so. Mein einziger Ansatz wäre vielleicht noch DB-Cache - wenn der überhaupt vom OPCache abgekapselt ist. Ich kenn mich da leider auch zu wenig aus :frowning:

Im Lighthouse Test sehe ich gerade noch, dass die Verwendung von http/1.1 bemängelt wird. Vielleicht mal mit dem Hoster über http/2 sprechen, das sollte inzwischen problemlos möglich sein. Das gibt bestimmt auch noch ein bis zwei Sekündchen.

LG;LA

Das könnte das Problem sein.
Aber dann muss ich mich fragen, wofür ist Shopware die richtige Software?
Wir sind mit unseren 4000 Produkten ja nun wirklich ein kleiner Fisch :slight_smile:

HTTP/2 wird auf jeden Fall die Anzeige beschleunigen - macht den Untergrund jedoch nicht schneller.

Du denkst, dass 4000 Artikel wenig sind?
Schau dir mal die Referenzen an - da bist du bereits ein dicker Fisch. :wink:

Wenn ich mir ansehe wie lang das generieren der Feeds für Google Shopping bzw. Idealo dauert, dann ist mir klar, was „groß“ für Shopware bedeutet. (180.000 Produkte, 3 Stunden pro Feed)
Von den Cronjobs, welche Memory limits ignorieren und bis zum erbrechen ausnutzen (>96 GB) mal abgesehen etc.

Kannst aktuell „nur“ den Cache regelmäßig für die Kategorieseiten erneuern, durch einen warm:up oder Zugriff.

Vielleicht liegt es auch an defekten Foreign Keys?
Ich wollte testweise mal alle Eigenschaften löschen, geht nicht:

Für SW5 gibt es SQL Queries um das zu korrigieren, für SW6 gibt es dazu gar nichts. Hat jemand eine Idee?
SET FOREIGN_KEY_CHECKS=0
SET FOREIGN_KEY_CHECKS=1
führt leider auch zu der gleichen Fehlermeldung.

@Teddie Shopware selbst sagt immer wieder, dass SW6 für große Shops geeignet sei.
Das mit den Exporten ist mir auch aufgefallen, eines von hunderten ToDo´s auf der Liste mit SW6. Bei mir dauert ein Export keine Ahnung wie lang, er ist noch nie durchgelaufen.
Unter SW5 war der Export samt allen Varianten in 20 Sekunden fertig.

Du kannst keine Eigenschaften löschen, da du zuerst die Produkte mit diesen Eigenschaften entfernen musst - zumindest ist der FK für diese Funktion angelegt - umgedreht soll / darf das gar nicht gehen, da du dir damit auch die Produkte inkl. Varianten und deren Konfiguration zerschießt // unbrauchbar machst.

Daher musst du auch die Eigenschaften zuerst anlegen und dann die Varianten generieren bzw. erstellen.

Der SW5 Export hat bei uns schon ca. 40 Minuten gebraucht.
Ich tauche nach und nach in die Programmierung ein - bis ich für jedes Problem eine Lösung habe. :wink: