Por que o Magento não pode desativar o cache quando o Redis falha

9

Estou trabalhando com o Magento 1.9.0.1 e, de vez em quando, nossos servidores Redis que hospedam o cache do Magento (AWS ElastiCache) ficam inativos. Quando isso acontece, o Magento fatalmente erros até Redis estar disponível novamente.

Essa pode ser uma pergunta difícil de responder rapidamente, mas o que me pergunto é por que o Magento não pode agir como se o cache estivesse desativado quando não puder se conectar ao Redis, em vez de errar fatalmente?

Não conheço nenhuma configuração ou módulo que ofereça essa capacidade ao Magento, mas aparentemente não é difícil. O Magento usa local.xmlpara descobrir como se conectar ao banco de dados e ao back-end do cache. Em seguida, ele se conecta ao banco de dados e analisa as opções de cache para saber se deve ou não usar o cache. Se solicitado pelo banco de dados a usar um determinado cache, ele alterna algum sinalizador (provavelmente uma variável global ou a propriedade de um singleton) e usa o back-end do cache para o restante da solicitação. Não foi possível fazer com que o Magento desligue isso durante essa solicitação se ocorrer um erro de conexão?

Um site lento é melhor que um erro fatal.

Edit: Evidentemente, algumas pessoas não entendem o que estou perguntando ou realmente não leram este post.

  1. Existe um módulo que dará ao Magento a capacidade de funcionar sem erro fatal quando o Redis não estiver disponível, quando o Redis estiver sendo usado como o principal método de armazenamento em cache.

  2. Caso contrário, alguém poderia me esclarecer por que isso não é possível ou é muito difícil?

Tyler V.
fonte
Esta é uma pergunta perfeitamente boa. Eu enfrentei o mesmo problema e tenho a mesma pergunta. Por que o magento não consegue perceber que o servidor Redis não está funcionando e alternar para o cache magento tradicional em vez de gerar fatalmente um erro.
Vinu D
11
@Tyler V, votando para reabrir, não vê como isso não está claro ou está fora do tópico, parece um problema interessante e uma pergunta válida. Eu não conheço um módulo que resolva esse problema, pode não ser algo que o Magento faça com facilidade e exigiria um módulo desenvolvido para isso. Eu acho que você precisaria pesquisar como o cache é chamado no Magento antes de desenvolver o módulo.
Holly
A solução mais simples seria um cron que envia um ping para Redis e, se não houver resposta, alterna local.xml por uma variante que usa o cache de arquivos.
Paul Grigoruta

Respostas:

2

Tudo o que você precisa fazer é corrigir 3 questões / problemas:

  1. Por que os redis falham? Tráfego intenso, erro, problemas de memória, rede?
  2. Configurações de tempo limite e novas tentativas de conexão?
  3. Sua pilha está atualizada?

Obviamente, você pode alterar algum código e colocar sua lógica em vez de erro.

MagenX
fonte