Почему Magento не может отключить кеш при сбое Redis

9

Я работаю с Magento 1.9.0.1, и время от времени наши серверы Redis, на которых размещается кэш Magento (AWS ElastiCache), выключаются. Когда это происходит, Magento приводит к фатальным ошибкам, пока Redis снова не станет доступен.

На этот вопрос может быть сложно ответить быстро, но меня интересует, почему Magento не может вести себя так, будто кеш отключен, если он не может подключиться к Redis, вместо того, чтобы сделать ошибку?

Мне не известны какие-либо настройки или модули, которые дают Magento эту способность, но на первый взгляд это не кажется сложным. Magento использует, local.xmlчтобы выяснить, как подключиться к базе данных и кеш-систем. Затем он подключается к базе данных и просматривает параметры кэша, чтобы узнать, следует ли использовать кэш. Если база данных указывает использовать данный кэш, она переключает некоторый флаг (возможно, глобальную переменную или свойство синглтона) и использует внутреннюю часть кеша для остальной части запроса. Может ли Magento быть отключен во время этого запроса, если произошла ошибка соединения?

Медленный сайт лучше фатальной ошибки.

Редактировать: Очевидно, некоторые люди не понимают, о чем я спрашиваю, или не читали этот пост.

  1. Есть ли модуль, который даст Magento возможность функционировать без фатальной ошибки, когда Redis недоступен, когда Redis используется в качестве основного метода хранения кеша.

  2. Если нет, может ли кто-нибудь объяснить мне, почему это невозможно или очень сложно?

Тайлер В.
источник
Это очень хороший вопрос. Я столкнулся с той же проблемой и имею тот же вопрос. Почему нельзя понять, что сервер Redis не работает, и переключиться на традиционный кэш magento вместо того, чтобы привести к ошибке.
Vinu D
1
@Tyler V, голосуя за повторное открытие, не вижу, как это неясно или не по теме кажется интересной проблемой и актуальным вопросом. Я не знаю модуля, который решает эту проблему, это может быть не то, что Magento делает легко из коробки, и для этого потребуется модуль, разработанный для этого. Я думаю, вам нужно изучить, как кеш вызывается в Magento, прежде чем разрабатывать модуль.
Холли
Простейшим решением будет cron, который пингует Redis, и, если ответа нет, заменяет local.xml вариантом, использующим кеширование файлов.
Пол Григорута

Ответы:

2

Все, что вам нужно сделать, это просто исправить 3 проблемы / проблемы:

  1. Почему Redis не удается? Интенсивный трафик, ошибки, проблемы с памятью, сети?
  2. Настройки тайм-аутов и попыток подключения?
  3. Ваш стек актуален?

Очевидно, вы можете изменить код и разместить логику вместо ошибки.

MagenX
источник