
A loja devolve 500 e o var/log/exception.log enche de “OOM command not allowed when used memory > ‘maxmemory'”. O Magento não tem culpa: o Redis encheu e está configurado para recusar escrita nova em vez de jogar fora chave velha. São dois ajustes, um na política de despejo e outro na separação dos bancos.
redis-cli info memory | grep -E 'used_memory_human|maxmemory_human|maxmemory_policy'
redis-cli info keyspace Se o used_memory bateu no maxmemory e a policy aparece como noeviction, achamos o culpado: assim o Redis lotado responde erro em todo SET, e o Magento traduz isso em página branca. Troque para allkeys-lru, que descarta a chave usada há mais tempo:
redis-cli config set maxmemory-policy allkeys-lru
redis-cli config rewrite
redis-cli config get maxmemory O config set vale na hora e o config rewrite grava no redis.conf que a instância carregou, sem reiniciar nada — de propósito: reiniciar o Redis que guarda sessão desloga todo mundo e esvazia carrinho no meio do expediente. Veja também o maxmemory: em 0 o Redis cresce até o OOM killer do kernel comer o processo.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-db=0
bin/magento setup:config:set --page-cache=redis --page-cache-redis-db=1
bin/magento setup:config:set --session-save=redis --session-save-redis-db=2
bin/magento cache:flush Os três reescrevem o app/etc/env.php, então guarde uma cópia dele antes. Compartilhar o banco 0 é o erro clássico: o full page cache cresce feito bicho e um cache:flush apaga a sessão de todo mundo junto. Com bancos separados você limpa um sem encostar no outro — o flush ainda derruba o FPC, então conte uns minutos de site lento.
Bancos separados dividem a mesma memória da instância, e o allkeys-lru não respeita fronteira de banco: num pico ele pode descartar sessão de cliente que estava no meio do checkout. Em loja com movimento eu subo uma segunda instância na porta 6380 só para sessão, com volatile-lru e maxmemory folgado, e aponto o –session-save-redis-port para ela.
Se travou nisso e precisa de ajuda, me chama aqui.
Adicione a caixa de aceite no checkout do WooCommerce e grave data e versão da política como meta do pedido,…
A função json_validate do PHP 8.3 diz se a string é JSON válido sem montar array nem objeto. Serve para…
Tire a chave de API do código com variável de ambiente, bloqueie o .env no nginx e entenda por que…
A opção de armazenamento de pedidos travada em posts e a sincronização que nunca termina: como migrar para as tabelas…
Troque strpos e substr por str_contains, str_starts_with e str_ends_with no PHP 8, com o polyfill para quem ainda mantém servidor…
Copiou um InstallData.php de tutorial antigo e o atributo não apareceu depois do setup:upgrade? Veja a classe de Data Patch…