Perché non è possibile Magento disattivare la cache quando Redis non riesce


9

Sto lavorando con Magento 1.9.0.1, e ogni tanto i nostri server Redis che ospitano la cache Magento, (AWS ElastiCache) verranno disattivati. Quando ciò accade, Magento si guasta fatalmente fino a quando Redis non sarà nuovamente disponibile.

Questa potrebbe essere una domanda difficile a cui rispondere rapidamente, ma quello che mi chiedo è perché Magento non può agire come se la cache fosse disabilitata quando non è in grado di connettersi a Redis, invece di sbagliare fatalmente?

Non sono a conoscenza di alcuna impostazione o modulo che dia a Magento questa capacità, ma in superficie non sembra difficile. Magento usa local.xmlper capire come connettersi al database e ai backend della cache. Quindi si collega al database e osserva le opzioni della cache per sapere se utilizzare o meno la cache. Se richiesto dal database di utilizzare una determinata cache, cambia alcuni flag (probabilmente una variabile globale o la proprietà di un singleton) e utilizza il backend della cache per il resto della richiesta. Magento non potrebbe essere fatto per disattivarlo durante quella richiesta se si verifica un errore di connessione?

Un sito lento è meglio di un errore fatale.

Modifica: Evidentemente alcune persone non capiscono cosa sto chiedendo o non hanno effettivamente letto questo post.

  1. Esiste un modulo che darà a Magento la possibilità di funzionare senza errori fatali quando Redis non è disponibile, quando Redis viene utilizzato come metodo di archiviazione della cache principale.

  2. In caso contrario, qualcuno potrebbe illuminarmi sul perché questo non è possibile o è molto difficile?


Questa è una domanda perfettamente valida. Ho affrontato lo stesso problema e ho la stessa domanda. Perché non posso capire che il server Redis non funziona e passare alla cache magento tradizionale invece di lanciare un errore fatale.
Vinu D,

1
@Tyler V, votando per riaprire, non vedo come questo non sia chiaro o off topic sembra un problema interessante e una domanda valida. Non conosco un modulo che risolva questo problema, potrebbe non essere qualcosa che Magento fa facilmente fuori dalla scatola e richiederebbe un modulo sviluppato per questo. Immagino che dovresti cercare come viene chiamata la cache in Magento prima di sviluppare il modulo.
Agrifoglio,

La soluzione più semplice sarebbe un cron che esegue il ping di Redis e, in assenza di risposta, scambia local.xml con una variante che utilizza la memorizzazione nella cache dei file.
Paul Grigoruta,

Risposte:


2

Tutto quello che devi fare è solo risolvere 3 problemi / problemi:

  1. Perché redis fallisce? Traffico intenso, errore, problemi di memoria, rete?
  2. Impostazioni di timeout e tentativi per la connessione?
  3. Il tuo stack è aggiornato?

Ovviamente puoi cambiare un po 'di codice e posizionare la tua logica anziché l'errore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.