Info: Shopware Detailseiten sehr langsam // Nicht gecached // + Lösung

Guten Tag,

Ich wollte mal alle informieren wie wir diese Herausforderung gelöst haben, da jemand nicht nochmal das gleiche passiert – und, falls das jemand noch mal passiert, schneller gefixed werden kann.

Problem:

Unsere Website war sehr langsam. Vor allem: die Product Listing pages. Ladezeiten von 6 bis 8 Sekunden. Nachdem die Listen-Seite einmal geöffnet wurde, war es dann beim wiederholtem Öffnen etwas schneller. Wenn man kurz eine andere Seite geöffnet hat, und danach wieder die zuvor geöffnete Listen-Seite, war die WIEDER so langsam.

Was haben wir gemacht / versucht?

Das Problem war zurück zu führen auf sehr langsame MySQL queries. Deswegen die lange Ladezeiten. Shopware benutzt sehr große, ineffiziente Queries mit Left_Joins, Inner_Joins, und sub selects… etc. etc. (Queries ohne Indexes) Also:

  • my.cnf Konfiguration tausend Mal geändert und getweaked. Verschiedene Settings versucht über mehrere Wochen: Query_Cache, Join_Buffer_Size, Sort_Buffer_Size, InnoDB_Buffer_Pool_Size, etc. etc. etc.
  • APC / Apcu Cache an / aus, Settings geändert
  • Zend OPCache an/aus, Settings geändert
  • Redis Cache installiert, configuriert, für nur Sessions, aber danach auch für statischen Seiten versucht
  • Memcached installiert für Sessions
  • Diverse MySQL Tools installiert um die langsame Queries zu finden, und versucht die Queries um zu schreiben (und versucht ob es mit extra Indexes schneller ging)
  • Schnellerer Server genommen, mit 8 Cores, 64 GB RAM, und NVMe SSD’s

Als letzter Schritt waren wir dabei dann Varnish zu benutzen, da wir aus unserer Sicht alles versucht hatten, und nichts geholfen hat. Auch waren wir schon dabei vor zu bereiten als letzte Lösung dann auf Magento um zu steigen. Nicht vergessen, wir waren seit ZWEI MONATEN dabei.

Wie haben wir das nun gelöst; was war es?

Irgendwie wurde ständig die Cache invalidiert – Ja, MySQL war langsam – aber die HTTPCache ist doch ein Fullpage-cache? Also das müsste ja dann auch die vielen langsamen DB Queries überflüssig machen. Warum wurden die Seiten dann nicht gecached? 

Wir hatten alle default shopware settings, nichts geändert, davon war ich mir fast sicher. Nichts besonders angepasst. Nur dass wir Shopware immer geupgraded haben, seit Version 4.x.

An einem Abend kam ich auf die Idee dan mal eine extra Shopware-Installation auf zu spielen, und in den Grundeinstellungen ALLE settings durch zu gehen, und zu vergleichen.
Vielleicht ist in den Updates irgendwann mal ja eine Einstellung dazu gekommen / geändert.

Und da war es.
In Einstellungen > Caches / Performance > Einstellungen > HTTP-Cache.

Dort sind diverse Controllers aufgelistet die gecached werden sollen.

Und bei uns fehlten im Vergleich zur Standard Shopware-Installation zwei Zeilen (entries):

  • frontend/listing
  • frontend/listing/layout

Die zwei hinzugefügt, Cache geleert, aufgewärmt, und BAM! Ladezeiten von 1 Sekunde. Ahhhhhh… 

So etwas einfaches. (jahaaaa, ich hätte auch viel schneller darauf kommen können diese Einstellungen zu kontrollieren. Ja. hör auf)

Vielleicht findet in Zukunft jemand diese Info, und spare ich so jemand viel Zeit :slight_smile:

Danke für’s Lesen, und happy Shopware-ing.

Hallo @pinkcubewerbeartikel,

vielen Dank für die Analyse. Wir haben das einmal in einem Testshop getestet. Wir vermuten, dass hier eventuell das Problem noch wo anders zu suchen ist. Vielleicht finden wir ja noch weitere Ansatzpunkte um deinen Shopware Shop beine zu machen.

Wir empfinden eine Ladezeit von 6-8 Sekunden sehr lang. Auch wenn wir den Cache und dem Compiler cache komplett deaktivieren, dauert die Ladezeit (1,5 - 2 Sekunden) bei uns nicht annähernd so lang. Wir haben zur Sicherheit auch vorher die zwei Caching controller gelöscht und haben auch damit einen test durchlaufen.

Das Ergebnis kannst du dir hier ansehen: https://shopware.web103.enerspace.de/ (der Testshop läuft bei uns im kleinsten Paket / Cache deaktiviert)

Eine Mögliche optimierung sind diverse Tabellen, wie Kunden kauften Auch etc. hier gab es in der Vergangenheit den einen oder anderen Shop der bei der Masse an Einträge vor allem auch im Warenkorb verlangsamt wurde. Die Gründe können hier aber vielseitig sein.

Wir möchten euch gern weitere Testmöglichkeiten anbieten, dazu schreib ich dir bei Interesse alles weitere per PM. Nach erfolgreicher Analyse, könnten wir gemeinsam das Resultat veröffentlichen.

Handelt es sich hier auch um den Shop: https://www.pinkcube.de mit in etwa 5400 Artikeln ohne Varianten?

VG

image
enerSpace Webhosting
Tel.: +49 511 - 219 568 76 | Web: https://www.enerspace.de

Die höhere Geschwindigkeit ist nun auch auf https://www.werbeartikel.website/ zu spüren. Und jetzt auch auf https://www.pinkcube.at, für Werbeartikel in Österreich.

Hi,

grundsätzlich ist das Problem mit dem langsamen Listing bekannt.
Dafür gibt es elasticsearch. Schon das mal ausprobiert?

Gruß Heiner