Warum kann Magento den Cache nicht ausschalten, wenn Redis fehlschlägt?

9

Ich arbeite mit Magento 1.9.0.1 und ab und zu fallen unsere Redis-Server, auf denen sich der Magento-Cache befindet (AWS ElastiCache), aus. In diesem Fall tritt Magento tödlich auf, bis Redis wieder verfügbar ist.

Es mag schwierig sein, diese Frage schnell zu beantworten, aber ich frage mich, warum Magento nicht so tun kann, als wäre der Cache deaktiviert, wenn keine Verbindung zu Redis hergestellt werden kann, anstatt sich tödlich zu irren.

Mir sind keine Einstellungen oder Module bekannt, die Magento diese Fähigkeit verleihen, aber an der Oberfläche scheint es nicht schwierig zu sein. Magento verwendet, local.xmlum herauszufinden, wie eine Verbindung zur Datenbank und zu den Cache-Backends hergestellt werden kann. Anschließend wird eine Verbindung zur Datenbank hergestellt und anhand der Cache-Optionen ermittelt, ob der Cache verwendet werden soll oder nicht. Wenn die Datenbank anweist, einen bestimmten Cache zu verwenden, wechselt sie ein Flag (wahrscheinlich eine globale Variable oder die Eigenschaft eines Singletons) und verwendet das Cache-Backend für den Rest der Anforderung. Könnte Magento nicht dazu gebracht werden, dies während dieser Anforderung wieder auszuschalten, wenn ein Verbindungsfehler auftritt?

Eine langsame Site ist besser als ein schwerwiegender Fehler.

Bearbeiten: Offensichtlich verstehen einige Leute nicht, was ich frage oder haben diesen Beitrag nicht wirklich gelesen.

  1. Gibt es ein Modul, mit dem Magento ohne schwerwiegende Fehler funktionieren kann, wenn Redis nicht verfügbar ist und Redis als primäre Cache-Speichermethode verwendet wird?

  2. Wenn nicht, könnte mich jemand aufklären, warum dies nicht möglich oder sehr schwierig ist?

Tyler V.
quelle
Das ist eine sehr gute Frage. Ich habe das gleiche Problem und die gleiche Frage. Warum kann Magento nicht erkennen, dass der Redis-Server nicht funktioniert, und auf den herkömmlichen Magento-Cache umschalten, anstatt einen Fehler tödlich auszulösen?
Vinu D
1
@ Tyler V, der für die Wiedereröffnung stimmt, sieht nicht, wie unklar oder nicht thematisch ein interessantes Problem und eine gültige Frage ist. Ich kenne kein Modul, das dieses Problem löst. Möglicherweise ist Magento nicht sofort einsatzbereit und erfordert ein dafür entwickeltes Modul. Ich denke, Sie müssten vor der Entwicklung des Moduls untersuchen, wie der Cache in Magento aufgerufen wird.
Holly
Die einfachste Lösung wäre ein Cron, der Redis anpingt. Wenn keine Antwort vorliegt, wird local.xml gegen eine Variante ausgetauscht, die das Zwischenspeichern von Dateien verwendet.
Paul Grigoruta

Antworten:

2

Alles was Sie tun müssen, sind nur 3 Probleme zu beheben:

  1. Warum schlägt Redis fehl? Starker Verkehr, Fehler, Speicherprobleme, Vernetzung?
  2. Einstellungen für Zeitüberschreitungen und Wiederholungsversuche für die Verbindung?
  3. Ihr Stack ist aktuell?

Natürlich können Sie Code ändern und Ihre Logik anstelle eines Fehlers platzieren.

MagenX
quelle