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.