Fronted Suche sehr langsam

Hallo Forengemeinde,

wir haben in der fronted Suche sehr lange Ladezeiten, teilweise über 1 Minute.
Im backend läuft die suche einwandfrei.
Plugins habe ich zum testen alle deaktiviert (Sicherheitsmodus), daran liegt es nicht.
Weiß jemand Rat ?

Aktuelle PHP-Versionen benutzen, Cache aktiveren, APCu sollte auch laufen

Hi Thomas,

würde auf den Index oder den Such-Cache tippen.

Backend → Einstellungen → Caches / Performance → Caches / Performance
Auf Reiter „Einstellungen“ unter „Allgemein“ → „Suche“ den Index neu aufbauen lassen
Ggf. Aktualisierungsstrategie überprüfen (empfohlen wird über Cronjob)
Dann im Reiter „Cache“ noch den „Cache Suchfunktion“ zurücksetzen.

Viel Erfolg!

LG Phil

Zunächst vielen Dank für eure Antworten.
Aktuell haben wir php 7.4 und es wird ein gelbes Dreieck mit ! angezeigt.
Wenn ich auf php 8 wechsle ist ein grüner Haken, aber die Kategorien bauen nicht mehr auf.
Welche Version sollte ich nehmen ?

Hallo Phil, habe ich alles versucht, ändert leider nichts, Suchzeit ist ca. 30 Sekunden…,

Wenn ich z.B.: nach Unterlegscheibe suche dauert das ca. 2-3 Sek. bis die Seite komplett geladen ist. Hast du mal ein Beispiel?

Jou, Beispiel wäre gut, und wann. Hab grad mal diverse Suchbegriffe auf deiner Seite getestet und die Antwortzeiten lagen alle im Sekundenbereich - egal ob 2 Treffer oder 539. Kann auch an der Tageszeit liegen (z.B. wenn sehr viele Leute gleichzeitig im Shop sind) oder am Hosting (wenn du die Ressourcen mit anderen Webseiten teilst). Es scheint jedenfalls kein grundsätzliches Problem bzgl. der Konfiguration eures Shops zu sein, daher würde ich diese Aussetzer eher in Richtung Lastspitzen/Hosting-Performance vermuten. Sprich doch mal mit deinem Hoster, i.d.R. können die über Monitoring herausbekommen, woran es klemmt (zB CPU überlastet oder zu wenig RAM)

LG Phil

Guten Morgen und Danke für eure Hilfe. Ein Beispiel das uns ein Kunde nannte ist „7380“, da dauert die Suche bei mir ca. 30 Sekunden. Spreche mit unserem Hoster und dann sehen wir weiter, danke nochmal!
LG Tom

Ich hatte eben beim Test mit „7380“ einen Error 500 Fehler. Da solltet ihr mal in die Logs schauen (Shopware Log und Server PHP Log), da steht bestimmt etwas dazu.

Danke für den Hinweis! Folgende Meldung kommt in den logs:
Doctrine\ORM\Query\QueryException: Too many parameters: the query defines 2 parameters and you bound 3 in /vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php:105 Stack trace:
#0 /vendor/doctrine/orm/lib/Doctrine/ORM/Query.php(317): Doctrine\ORM\Query\QueryException::tooManyParameters()
#1 /vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php(1000): Doctrine\ORM\Query->_doExecute()
#2 /vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php(954): Doctrine\ORM\AbstractQuery->executeIgnoreQueryCache()
#3 /vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php(757): Doctrine\ORM\AbstractQuery->execute()
#4 /vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Pagination/Paginator.php(172): Doctrine\ORM\AbstractQuery->getResult()
#5 /engine/Shopware/Controllers/Backend/Application.php(590): Doctrine\ORM\Tools\Pagination\Paginator->getIterator()
#6 /engine/Shopware/Controllers/Backend/Application.php(324): Shopware_Controllers_Backend_Application->searchAssociation()
#7 /engine/Library/Enlight/Controller/Action.php(182): Shopware_Controllers_Backend_Application->searchAssociationAction()
#8 /engine/Library/Enlight/Controller/Dispatcher/Default.php(478): Enlight_Controller_Action->dispatch()
#9 /engine/Library/Enlight/Controller/Front.php(228): Enlight_Controller_Dispatcher_Default->dispatch()
#10 /engine/Shopware/Kernel.php(191): Enlight_Controller_Front->dispatch()
#11 /vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(85): Shopware\Kernel->handle()
#12 /vendor/symfony/http-kernel/HttpCache/HttpCache.php(477): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle()
#13 /engine/Shopware/Components/HttpCache/AppCache.php(261): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward()
#14 /vendor/symfony/http-kernel/HttpCache/HttpCache.php(267): Shopware\Components\HttpCache\AppCache->forward()
#15 /engine/Shopware/Components/HttpCache/AppCache.php(102): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass()
#16 /home/dunmvtok/www.dunken.de/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle()
#17

Ich kann nur vermuten (sehe ja euren Shop nicht), das eventuell eurer Hosting nicht ganz zu Shopware passt. Eventuell passen auch die Datenbank-Einstellungen nicht bzw. sind nicht für Shopware optimiert. Vielleicht auch mal Hilfe suchen, der sich das im Backend mal genauer ansieht.

Hmm. Da ist definitiv irgendwo der Wurm drin. Überprüfe mal die Einstellungen für die Suche in den Grundeinstellungen (unter Storefront), ggf. mal auf Shopware-Standard zurücksetzen. Dito für den Reiter “Relevanz / Felder” - die Relevanz ist eher unkritisch, aber bei den zu durchsuchenden Feldern kann sich leicht mal ein Fehler einschleichen, da man hier den Spaltennamen in der DB angeben muss.

Die Standardsuche in SW geht direkt auf die Datenbank, die Performance hängt also direkt von der Geschwindigkeit eurer Datenbank ab. Hat man sehr viele Artikel bzw. Suchfelder (einige hundertausend), ist SW bereits vorbereitet für den Einsatz einer speziellen Engine (Elasticsearch). Informationen zur Integration dieser gibt es hier: https://developers.shopware.com/sysadmins-guide/elasticsearch-setup/

LG Phil

Guten Morgen und vielen Dank für eure Hilfe.
Leider hat auch das nicht geholfen, komisch ist das nur bestimmte Suchbegriffe ewig brauchen z.B. „7380“ und andere ok sind. Wenn „7380“ dann endlich gefunden wurde und man klickt auf alle Ergebnisse anzeigen dauert es noch länger. Vor dem letzten Update auf Shopware 5.7.1 (5.7.2) war dieses Problem nicht bekannt. Wir haben rund 1050 Artikel , die meisten mit Varianten, zusammen ca. 40.000 Artikel inklusive Varianten. Ist jemand von euch bereit sich das mal anzuschauen, meine Kenntnisse reichen dafür einfach nicht aus ?

Hi Thomas,

dieses Fehlerbild sieht sehr nach einem Problem mit der Datenbank aus. Falls möglich kannst du in deiner my.cnf folgende Einträge vornehmen:

log_slow_queries = /var/log/mysql/mysql-slow.log (Pfad ggf anpassen)
long_query_time = 3
log-queries-not-using-indexes

Damit protokolliert MySQL alle Abfragen die länger als 3 Sekunden benötigen bzw. bei welchen kein Index genutzt werden kann. Für die Artikelsuche wird ja die Volltextsuche von MySQL verwendet und langsame Abfragen werden meistens durch einen fehlenden Index verursacht. Nach Auswertung des logs kannst du dann die DB entsprechend optimieren.

Falls du da selbst nicht mehr weiterkommst würde ich dir empfehlen, professionelle Hilfe in Anspruch zu nehmen.

LG Phil

Vielen Dank für deine ausführliche Hilfe Phil ! :grinning:

Suchen Freelancer der uns bei dem Problem hilft, Angebote bitte per PM