Berichte aus dem Leben.
Server: netcup RS 1000 Plus SSD G8
Projektleiter war beim Kunden vor Ort um Shopware zu konfigurieren.
In den Einstellungen Warenkorb gibt es ein Konfigurationsfeld "Maximale Auswahlmenge". Man ist sich einig dass der Kunde soviel bestellen kann wie er mag. Eine Millionen erscheint jedem Beteiligten als eine sinnvolle Grenze.
Stunden später: Notfallmeldung bei mir. Der Shop ist unerträglich langsam. Der Server an der Grenze. Laden von Artikeln dauert 15 Sekunden. Laden vom Warenkorb nicht möglich. HILFE!!!
Ich suche mir stundenlang einen Ast ab, der Server toastet derweil vor sich hin. Ich finde: nichts.
Ich durchwühle 150 MB xdebug PHP Profile: Nichts eindeutiges
Ich wälze Hunderte Zeilen mysql log: Auch nichts
Bis zu 4 Apache Prozesse drehen sich um Kreis, teilweise 80% CPU, laufen quasi dauerhaft.
Der Projektleiter weiß dass er was umgestellt hat. Viel wurde konfiguriert. Regeln, Berechnungen, ne ganze Menge. Aber ist das jetzt wirklich der Fehler?
Am nächsten Tag dann: Projektleiter stellt das Feld "Maximale Auswahlmenge" zurück. Alles ist wieder sauber. Der Server verliert sofort die Last und schnurrt wieder wie ein Kätzchen.
Was war passiert?
Shopware baut für jeden Wert zwischen 0 und der maximalen Auswahlmenge (1000000) einen Eintrag ins Optionfield neben dem Artikel. Im Warenkorb für jeden Artikel ein Optionfield.
Ein html Optionfield mit eine Millionen Einträgen zu füllen scheint also keine gute Idee zu sein...