Pourquoi Magento ne peut-il pas désactiver le cache lorsque Redis échoue

9

Je travaille avec Magento 1.9.0.1, et de temps en temps nos serveurs Redis qui hébergent le cache Magento (AWS ElastiCache) vont baisser. Dans ce cas, Magento commet une erreur fatale jusqu'à ce que Redis soit à nouveau disponible.

Il peut être difficile de répondre rapidement à cette question, mais je me demande pourquoi Magento ne peut-il pas agir comme le cache est désactivé lorsqu'il ne peut pas se connecter à Redis, au lieu de se tromper fatalement?

Je ne connais aucun paramètre ou module qui donne à Magento cette capacité, mais à première vue, cela ne semble pas difficile. Magento utilise local.xmlpour comprendre comment se connecter à la base de données et aux backends du cache. Il se connecte ensuite à la base de données et examine les options de cache pour savoir s'il faut ou non utiliser le cache. Si la base de données lui dit d'utiliser un cache donné, elle commute un indicateur (probablement une variable globale ou la propriété d'un singleton) et utilise le backend du cache pour le reste de la demande. Magento ne pourrait-il pas être fait pour désactiver cette fonction lors de cette demande si une erreur de connexion se produit?

Un site lent vaut mieux qu'une erreur fatale.

Edit: Évidemment, certaines personnes ne comprennent pas ce que je demande ou n'ont pas réellement lu ce post.

  1. Existe-t-il un module qui donnera à Magento la possibilité de fonctionner sans erreur fatale lorsque Redis n'est pas disponible, lorsque Redis est utilisé comme méthode de stockage de cache principale.

  2. Sinon, quelqu'un pourrait-il m'expliquer pourquoi cela n'est pas possible ou est très difficile?

Tyler V.
la source
C'est une très bonne question. J'ai fait face au même problème et j'ai la même question. Pourquoi magento ne peut-il pas réaliser que le serveur Redis ne fonctionne pas et basculer vers le cache magento traditionnel au lieu de générer une erreur fatale?
Vinu D
1
@Tyler V, votant pour la réouverture, ne voit pas comment cela n'est pas clair ou hors sujet semble être un problème intéressant et une question valide. Je ne connais pas de module qui résout ce problème, ce n'est peut-être pas quelque chose que Magento fait facilement hors de la boîte et nécessiterait un module développé pour cela. Je suppose que vous auriez besoin de rechercher comment le cache est appelé dans Magento avant de développer le module.
Holly du
La solution la plus simple serait un cron qui pings Redis et s'il n'y a pas de réponse, échange local.xml avec une variante qui utilise la mise en cache de fichiers.
Paul Grigoruta

Réponses:

2

Il vous suffit de résoudre 3 problèmes / problèmes:

  1. Pourquoi redis échoue? Trafic important, erreur, problèmes de mémoire, mise en réseau?
  2. Paramètres d'expiration et de nouvelles tentatives de connexion?
  3. Votre pile est à jour?

Évidemment, vous pouvez changer du code et placer votre logique au lieu d'une erreur.

MagenX
la source