wir updaten die Produkte per API. Jeder Call dauert auf einmal über 30 Sekunden und bei Tausenden Produkten wird das nie mehr fertig.
Jetzt haben wir probiert, wahllos irgendwelche Artikel im Shopware-Admin zu bearbeiten, egal, ob man die Bezeichnung des Produkts ändert oder den Lagerstand. Auch hier gibt es eine Wartzeit von 30 Sekunden. Wer kann uns bitte hier helfen?
Wir vermuteten ein Problem mit der Datenbank. Haben die gesamte Datenbank gedumped und in eine eine neue importiert. Half aber gar nichts. D.h. es liegt nicht in an der Datenbank.
Cache haben wir natürlich schon gelöscht, sogar im /var/cache Ordner. Daran lag es auch nicht.
Hier ein Screen von der Browser-Console, wenn man im Admin ein Produkt speichert:
Wenn man die Tabelle seo_url löscht, dann dauert es zumindest nur mehr 6 Sekunden statt 30 Sekunden. Warum die Einträge in seo_url eine Auswirkung haben, wenn man lediglich den Lagerstand updated, ist mir schleierhaft. Aber die seo_url Einträge werden natürlich benötigt, ohne geht es nicht.
Die weiter Ursache liegt darin, dass im Sales-Channel sehr viele Domains hinterlegt sind. Bei uns 200, weil jeder Händler im Shop seine eigene URL nach außen hin hat. Löscht man diese, geht es wieder schnell. Inwieweit das Update eines Produktes (Bezeichnung oder Lagerstand) eine Verbindung zu einer Domain im Sales-Channel hat, ist nicht nachvollziehbar.
Wir prüfen nun die Indizes auf DB-Ebene, ev. fehlen hier welche. Interessant wäre es zu wissen, welche DB-Queries hier ausgeführt werden. Gibt es irgendeine Möglichkeit, diese mitzuloggen? Der DEV-Modus im .env File bringt zwar die Symfony Debug Tool Bar, allerdings nur mit Daten, die beim Aufbau der Produktseite im Admin generiert werden. Klickt man dann auf Speichern, wird die API per AJAX gecallt und dieser Request scheint nicht in der Debug Tool Bar auf. Gibt es hier eine andere Möglichkeit?
Danke für den Tipp. Es ist leider nicht eine langsame Query sondern eine schnelle, die über 1500 Mal gerufen wird, da hier ein UPDATE-Statement im Shopware-Core nicht korrekt ist und redundante Treffer liefert, die dann zu dieser Masse an unnötigen UPDATE-Statements führt. Wir haben das nun im Core geändert und nun geht das Speichern eines Artikels über den Admin oder über die API so schnell wie noch nie.