Guten Tag zusammen,
wir wärmen jede Nacht unseren http-cache über cronjob->sw:warm:http:cache auf. Das funktioniert auch soweit einwandfrei.
Jetzt hatten wir heute Nacht einen Serverausfall.
Der Webserver hat nicht mehr ausgeliefert.
Laut unserem Hoster war dies durch massive Anfragen von unserem Cache Warmup bedingt.
Wobei die Warmup-Logeinträge in core_production den Staus-Code 503 und 504 haben, also nicht verfügbar oder timeout.
In der Zeit vor dem Ausfall hatten wir so ca. 1-2 Request pro Sekunde, was natürlich auch den fettesten Skylake/SSD aus den Socken haut.
Aber Spaß beiseite, er ist der Shopware Fachmann und ich schenke ihm erst mal glauben.
Nun würde ich gerne das Warmup konfigurieren (wieviele gleichzeitige Anfragen, etc).
Aktuell starten wir das Warmup ohne Parameter.
Ich habe mir bereits die Dokumentation (admin und dev) zum Cache durchgelesen. Dort steht nichts dazu.
An der Konsole mit help bekomme ich zumindest die möglichen Parameter mit Kurzbeschreibung angezeigt. Leider aber nicht, wie sich welcher Parameter auswirkt, ob sie kombinierbar sind, ob dies zu empfehlen ist oder eher nicht, usw.
Natürlich könnte ich einfach so lange rumprobieren bis was vermeintlich passendes dabei rauskommt aber das klassische: „2 Stunden Trial and Error können locker 10 Minuten Doku lesen einsparen“ ist nicht so ganz mein Motto .
Hat von Euch jemand weitergehende Dokumentation zu sw:warm:http:cache mit seinen Parametern oder einige dokumentierte Beispiele?
Danke und beste Grüße
Mathias
Ab Version 5.5 kannst du auch nur Teilbereiche aufwärmen:
https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers//#cache-warmer
Vielleicht hilft dir das ja schon - ein anhängen des „-h“ Parameters zeigt dir grundsätzlich alle verfügbaren Parameter für die Funktion an.
LG Andre
Hallo Andre,
vielen Dank.
Ja, das sind die möglichen Parameter. Aber wie kann ich zum Beispiel die Anzahl der concurrent requests steuern?
In engine/Shopware/Commands/WarmUpHttpCacheCommand::configure() sehe ich
…
addOption('concurrent-requests', 'b', InputOption::VALUE_OPTIONAL, 'Integer repres
…
Leider finde ich keine Doku dazu.
Bsp.:
Wie ist der Standardwert?
Was mich auch interessieren würde: Wenn der Request fehlschlägt (wie bei mir mit 503 oder 504) wird er dann gequeued und erneut ausgeführt, plus den nächsten Request? Also schaukelt sich das ganze auf?
VG
Mathias
Die Batch Size müsste im Standard 10 sein, die Concurrent Requests sind „2“ - diese Standardwerte sollten aber bei einem ausreichend potenten und korrekt konfigurierten Server nicht zum Ausfall führen, vor allem wenn dies zu schwach besuchten Zeiten gemacht wird.
Hier muss man unterscheiden - ein 503 Fehler ist ein Skriptfehler. Hier empfiehlt es sich das Access Log anzuschauen, und nach Status Code 503 zu filtern. Im Normalfall müsstest du beim Aufruf der URLs (nichts anderes macht der Cache Warmer) ebenfalls den Fehler erhalten. Hier sind wir dann beim Thema Fehler Debuggen:
Shopware 5 - Tutorials & FAQs - Fehlermeldungen in Shopware debuggen
Die URLs mit Fehler werden nicht nochmal aufgewärmt bzw. in keine Warteschlage gepackt.
LG Andre
Hallo Andre,
vielen Dank für die Informationen. Das ist doch schon ein Großteil der von mir gesuchten.
Beim Debuggen hänge ich noch ein bischen.
Ich kann mir einfach nicht vorstellen, dass ein paar Seitenaufrufe dazu führen, dass ein gut ausgestatteter, moderner Server mitten in der Nacht (kaum Betrieb) in die Knie geht.
Da vermute ich doch eher irgendeinen Fehler im Zusammenspiel von nginx, apache und weiteren Komponenten.
Leider habe ich den Aulöser noch nicht gefunden.
Ich denke ich werde da ein paar Monitoring Scripte schreiben und auf den nächsten Vorfall warten müssen.
Sollte ich dann zu einem Ergebnis kommen, werde ich hier denn Thread updaten.
Bis dahin nochmals besten Dank.
VG Mathias