¿Por qué Magento no puede apagar la caché cuando falla Redis?

9

Estoy trabajando con Magento 1.9.0.1, y de vez en cuando nuestros servidores Redis que alojan el caché de Magento (AWS ElastiCache) se apagarán. Cuando esto sucede, Magento comete errores fatales hasta que Redis vuelve a estar disponible.

Esta podría ser una pregunta difícil de responder rápidamente, pero lo que me pregunto es por qué Magento no puede actuar como si la memoria caché estuviera deshabilitada cuando no puede conectarse a Redis, en lugar de errar fatalmente.

No conozco ninguna configuración o módulo que le dé a Magento esta capacidad, pero en la superficie no parece difícil. Magento utiliza local.xmlpara descubrir cómo conectarse a la base de datos y los backends de caché. Luego se conecta a la base de datos y mira las opciones de caché para saber si usarlo o no. Si la base de datos le indica que use una memoria caché determinada, cambia algunos indicadores (probablemente una variable global o la propiedad de un singleton) y usa el backend de la memoria caché para el resto de la solicitud. ¿No podría hacerse que Magento desactive esto durante esa solicitud si se produce un error de conexión?

Un sitio lento es mejor que un error fatal.

Editar: Evidentemente, algunas personas no entienden lo que estoy preguntando o en realidad no leyeron esta publicación.

  1. ¿Existe un módulo que le otorgue a Magento la capacidad de funcionar sin errores fatales cuando Redis no está disponible, cuando Redis se está utilizando como el método de almacenamiento de caché principal.

  2. Si no, ¿alguien podría aclararme por qué esto no es posible o es tan difícil?

Tyler V.
fuente
Esta es una muy buena pregunta. Me he enfrentado al mismo problema y tengo la misma pregunta. ¿Por qué no puede magento darse cuenta de que el servidor Redis no funciona y cambiar al caché magento tradicional en lugar de arrojar un error fatalmente?
Vinu D
1
@Tyler V, votando para volver a abrir, no veo cómo esto no está claro o fuera de tema parece un problema interesante y una pregunta válida. No conozco un módulo que resuelva este problema, puede que no sea algo que Magento haga fácilmente y requeriría un módulo desarrollado para esto. Supongo que tendrías que investigar cómo se llama el caché en Magento antes de desarrollar el módulo.
Holly
La solución más simple sería un cron que haga sonar Redis y, si no hay respuesta, intercambia local.xml con una variante que utiliza el almacenamiento en caché de archivos.
Paul Grigoruta

Respuestas:

2

Todo lo que tienes que hacer es solucionar 3 problemas / problemas:

  1. ¿Por qué falla redis? ¿Tráfico pesado, error, problemas de memoria, redes?
  2. Configuración de tiempos de espera y reintentos para la conexión?
  3. ¿Tu pila está actualizada?

Obviamente, puede cambiar algo de código y colocar su lógica en lugar de error.

MagenX
fuente