Warenkorb zu langsam. [ERLEDIGT]

Hi all, bei uns ist Warenkorb zu langsam. Um einen Artikel in Warenkorb zu legen, dauert es ca. 45 sek. Und je mehr Artikeln im cart, desto langsammer. Ist Cache bei Warenkorb aus? Was kann man damit machen?

EXPLAIN id select\_type table type possible\_keys key key\_len ref rows Extra 1 SIMPLE av system ordernumber NULL NULL NULL 0 const row not found 1 SIMPLE s\_order\_basket ref sessionID sessionID 72 const 12 Using where; Using temporary; Using filesort 1 SIMPLE ad eq\_ref ordernumber ordernumber 42 c12shop.s\_order\_basket.ordernumber 1 1 SIMPLE a ALL PRIMARY NULL NULL NULL 663173 1 SIMPLE su eq\_ref PRIMARY PRIMARY 4 c12shop.a.unitID 1

Hallo, das der Warenkorb so langsam ist, kann ich aktuell nicht feststellen. Bei mir ist der Prozess und die Seite in 1-2 Sekunden (gefühlt) fertig. Mir ist allerdings aufgefallen, dass du einige Zahlungsarten, Versandarten, sowie sehr sehr viele Länder anzeigen lässt. Das sorgt auch alleine schon für einen langen Seitenquelltext, was zum Aufbau der Seite dann einfach auch im Browser etwas Zeit in Anspruch nimmt. Das der Warenkorb aber generell langsam ist kann ich, wie bereits geschrieben, bei mir nicht erkennen.

SELECT s\_order\_basket.\*, a.packunit, minpurchase,taxID,IF (ad.instock,ad.instock,av.instock) AS `instock`,suppliernumber,maxpurchase,purchasesteps,purchaseunit,unitID,laststock,shippingtime,releasedate,releasedate AS sReleaseDate,stockmin,esd, su.description AS itemUnit, ob\_attr1,ob\_attr2,ob\_attr3,ob\_attr4,ob\_attr5,ob\_attr6 FROM s\_order\_basket LEFT JOIN s\_articles\_details AS ad ON ad.ordernumber = s\_order\_basket.ordernumber LEFT JOIN s\_articles\_groups\_value AS av ON av.ordernumber = s\_order\_basket.ordernumber LEFT JOIN s\_articles a ON (a.id = ad.articleID OR a.id = av.articleID) LEFT JOIN s\_core\_units su ON su.id = a.unitID WHERE sessionID='xxxxxxxxxxxx' ORDER BY id ASC, datum DESC diese Abfrage dauert bei mir mind. 7 sec bei 11 Artikeln in cart. Auch Debug sagte PostDispatch - ca 25 sec. Meinst du wirklich, dass die Länderliste so viel Zeit für Aufbau nimmt?

Also langsam ist nicht Einfühgen der Artikel, sondern Warenkorbanzeige. Manchmal bekomme ich auch 502 error…

Hi, an der Stelle werden auch Plugins jedes Mal geladen, wie z.B. Amazon. Kannst du solche Plugins, die im Warenkorb alle geladen werden mal temporär deinstallieren? Bisher kenne ich keine Umgebung, in der das so lange dauert. Daher gehe ich hier von Plugins oder anderen Änderungen aus, die dort eingreifen.

Ein Artikel in Warenkorb name memory time Front\_RouteStartup 0.00 b 0.00001 Front\_RouteShutdown 256.00 kb 0.00072 Front\_DispatchLoopStartup 512.00 kb 0.00581 Front\_PreDispatch 512.00 kb 0.00594 Action\_Init 4.25 mb 0.04309 Action\_PreDispatch 4.25 mb 0.04398 Action\_PostDispatch 6.75 mb 1.11202 Enlight\_Plugins\_ViewRenderer\_PreRender 8.00 mb 1.16618 Enlight\_Plugins\_ViewRenderer\_PostRender 11.00 mb 1.30777 Front\_PostDispatch 11.00 mb 1.30799 Front\_DispatchLoopShutdown 11.00 mb 1.30821 3 Artikel Front\_RouteStartup 0.00 b 0.00004 Front\_RouteShutdown 256.00 kb 0.00166 Front\_DispatchLoopStartup 512.00 kb 0.01354 Front\_PreDispatch 512.00 kb 0.01392 Action\_Init 4.25 mb 0.07438 Action\_PreDispatch 4.25 mb 0.07568 Action\_PostDispatch 7.00 mb 6.08399 Enlight\_Plugins\_ViewRenderer\_PreRender 8.00 mb 6.13473 Enlight\_Plugins\_ViewRenderer\_PostRender 11.00 mb 6.28772 Front\_PostDispatch 11.00 mb 6.28785 Front\_DispatchLoopShutdown 11.00 mb 6.28798 8 Artikel Front\_RouteStartup 0.00 b 0.00002 Front\_RouteShutdown 256.00 kb 0.00115 Front\_DispatchLoopStartup 512.00 kb 0.00958 Front\_PreDispatch 512.00 kb 0.00980 Action\_Init 4.25 mb 0.05235 Action\_PreDispatch 4.25 mb 0.05353 Action\_PostDispatch 7.50 mb 17.45797 Enlight\_Plugins\_ViewRenderer\_PreRender 8.50 mb 17.51623 Enlight\_Plugins\_ViewRenderer\_PostRender 11.50 mb 17.76963 Front\_PostDispatch 11.50 mb 17.76976 Front\_DispatchLoopShutdown 11.50 mb 17.76988 Die Plugins abgeschaltet. Es sehe die direkte Beziehung zwichen Ladezeit und Artikelanzahl in Warenkorb.

Hi, die Abfrage ist totaler Müll, wie man am Explain ja auch sieht… LEFT JOIN s\_articles a ON (a.id = ad.articleID OR a.id = av.articleID) Ohne Worte :slight_smile: Weißt du zufällig wo die herkommt?

1 Like

engine/core/class/sBasket.php Zeile ca. 873

Oooo! Danke! Ich habe „OR a.id = av.articleID“ weggeschmießen und es läuft SEHR schnell! Ist diese Abfrage nur in Community-version so aussieht? :sunglasses: Ich werde andere Abfragen zu beobachten. Bestimmt gibt es noch welche, die so schlecht aufgebaut sind.

Ich denke mal, dass die Abfrage in jeder Edition so aussieht, nicht nur in der CE. Unterschieden die sich im Quellcode überhaupt? Ich weiß es nicht… Die Abfrage, so wie sie ist, macht halt für jeden einzelnen Artikel im Warenkorb einen Full Table Scan gegen s_articles, das deckt sich auch mit deiner Beobachtung, dass der Warenkorb immer langsamer wird, je mehr Artikel drin sind. Wenn man insgesamt keinen großen Artikelbestand hat, fällt das auch nicht großartig auf, aber es „skaliert“ halt nicht, wie man so schön sagt :smiley:

Ja, ich habe Fullscan gesehen, deswegen habe ich hier gepostet. Ich glaube, dass Shopware-Team sollte alle Abfragen überprüfen :sunglasses: Also, wie gesagt, ich habe eine Teil von Abfrage gelöscht. Ich habe nicht geprüft, welche Auswirkung auf s_articles_groups kommt. Aber wir benutzen es nicht. Und es ist jetzt wirklich sauschnell :slight_smile: Nochmal Danke!