Überspringen von Requests
In gewissen Fällen kann es vorkommen, dass das Plugin beim Abfragen einiger Daten von Bexio / dem Synchronisieren von Bestellungen keine Antwort vom Service erhalten kann. Dies ist in der Regel nur temporär, je nach Dauer des Anhaltens kann es jedoch vorkommen, dass mitunter bei jedem Seitenaufruf im Shop dann eine grössere Last am System entsteht.
Dies liegt daran, dass gewisse Daten regelmässig synchron abgefragt werden müssen. Dies betrifft z.B. die Buchungskonten & Steuersätze aus Bexio, aber auch weitere Einstellungen im Plugin (z.B. Benutzer, Bankkonto etc.). Diese Daten werden jeweils für 15 Minuten gecacht. Ist der Cache abgelaufen, wird beim nächsten Seitenaufruf im Shop versucht diese Daten neu abzufragen. Tritt jedoch bei einem Request ein Timeout auf - z.B. weil der Service temporär nicht erreichbar wäre - sind in der Regel auch andere Requests an den Service davon betroffen. Entsprechend würden dann alle diese Requests bis zum Timeout auf eine Antwort warten.
Dies kann dann zu einer höheren Last im Shop-Prozess führen. Aus diesem Grund gibt es seit Version 2.5.4 des Bexio Automator Plugins einen Mechanismus, der dazu führt, dass im Falle eines Timeouts bei einem Request weitere nachfolgende Requests für eine bestimmte Zeit (standardmässig 5 Minuten, resp. 300 Sekunden) übersprungen werden. Dies dient dazu weitere Timeouts zu vermeiden und so die Last im Shop-Prozess zu reduzieren.
Wenn Requests so übersprungen werden, werden temporär auch Daten aus abgelaufenen Cache-Files verwendet, damit die Einstellungen im Plugin korrekt erhalten bleiben.
Fehlermeldung beim Überspringen von Requests
Wenn ein Timeout aufgetreten ist und deshalb Requests übersprungen werden, schlagen Synchronisierungen von Bestellungen mit einer entsprechenden Fehlermeldung fehl. Im Backend des Shops wird dann ebenfalls mit einer Meldung darauf hingewiesen, dass Requests temporär übersprungen werden.
Anpassen der Zeiten
Der Mechanismus zum temporären Überspringen von Requests nach einem Timeout kann auf 2 Arten angepasst werden:
- Mit dem Filter
'raptus_wc_bexio_connector_request_timeout'
, um die Zeit bis zum Eintreten eines Timeouts zu überschreiben (Standard: 20 Sekunden). - Mit dem Filter
'raptus_wc_bexio_connector_recent_timeout_threshold'
, um zu überschreiben, für wie lange Requests übersprungen werden sollen, wenn ein Timeout aufgetreten ist (Standard: 5 Minuten, resp. 300 Sekunden).
Zu kurzer Timeout
Wird der Request-Timeout zu kurz gesetzt, kann es vorkommen, dass dadurch 'künstlich' ein Timeout erzeugt wird. Dies geschieht, weil der Timeout dann auftritt, bevor der Request vollständig verarbeitet und eine Antwort geschickt werden konnte. In diesem Fall würden dann grundsätzlich Timeouts bei jedem Request auftreten, was wiederum alle weiteren Requests für die gesetzte Zeit temporär überspringen würde (bis zum nächsten so erzeugten Timeout). Um dies zu vermeiden, sollte beim Überschreiben des Request-Timeouts keine zu kurze Zeit (ab <10 Sekunden möglich) verwendet werden.
Kommentare
0 Kommentare