Dlaczego Magento nie może wyłączyć pamięci podręcznej, gdy Redis się nie powiedzie?

9

Pracuję z Magento 1.9.0.1 i co jakiś czas nasze serwery Redis, które obsługują pamięć podręczną Magento (AWS ElastiCache) ulegną awarii. Kiedy tak się dzieje, Magento popełnia błąd, dopóki Redis nie będzie ponownie dostępny.

To może być trudne pytanie, na które należy szybko odpowiedzieć, ale zastanawiam się, dlaczego Magento nie może zachowywać się tak, jakby pamięć podręczna była wyłączona, gdy nie może połączyć się z Redis, zamiast fatalnie błądzić?

Nie znam żadnego ustawienia ani modułu, który dałby Magento tę zdolność, ale na pierwszy rzut oka nie wydaje się to trudne. Magento używa, local.xmlaby dowiedzieć się, jak połączyć się z bazą danych i backendami pamięci podręcznej. Następnie łączy się z bazą danych i sprawdza opcje pamięci podręcznej, aby dowiedzieć się, czy użyć pamięci podręcznej. Jeśli baza danych poleci jej użycie pamięci podręcznej, przełącza flagę (prawdopodobnie zmienną globalną lub właściwość singletona) i używa reszty pamięci podręcznej dla pozostałej części żądania. Czy nie można zmusić Magento do wyłączenia tego podczas tego żądania, jeśli wystąpi błąd połączenia?

Wolna strona jest lepsza niż błąd krytyczny.

Edycja: Najwyraźniej niektórzy ludzie nie rozumieją, o co pytam lub nie przeczytali tego postu.

  1. Czy istnieje moduł, który da Magento możliwość działania bez błędu krytycznego, gdy Redis jest niedostępny, gdy Redis jest używana jako podstawowa metoda przechowywania w pamięci podręcznej.

  2. Jeśli nie, czy ktoś mógłby mnie oświecić, dlaczego nie jest to możliwe lub jest bardzo trudne?

Tyler V.
źródło
To jest bardzo dobre pytanie. Napotkałem ten sam problem i mam to samo pytanie. Dlaczego nie mogę zdać sobie sprawy, że serwer Redis nie działa i przełączyć się na tradycyjną pamięć podręczną Magento zamiast zgubić błąd.
Vinu D
1
@Tyler V, głosując, aby ponownie otworzyć, nie widzę, jak to jest niejasne lub nie na temat wydaje się interesującym problemem i ważnym pytaniem. Nie znam modułu, który rozwiązuje ten problem, może to nie być coś, co Magento robi łatwo po wyjęciu z pudełka i wymagałoby do tego modułu opracowanego. Wydaje mi się, że przed opracowaniem modułu należy sprawdzić, jak pamięć podręczna jest wywoływana w Magento.
Holly,
Najprostszym rozwiązaniem byłby cron, który pinguje Redis, a jeśli nie ma odpowiedzi, zamienia plik local.xml na wariant wykorzystujący buforowanie plików.
Paul Grigoruta,

Odpowiedzi:

2

Wystarczy, że naprawisz 3 problemy / problemy:

  1. Dlaczego Redis kończy się niepowodzeniem? Duży ruch, błędy, problemy z pamięcią, praca w sieci?
  2. Ustawienia limitów czasu i ponownych prób połączenia?
  3. Twój stos jest aktualny?

Oczywiście możesz zmienić kod i umieścić logikę zamiast błędu.

MagenX
źródło