
Estou executando um site baseado em Magento com muitos recursos por meio de uma combinação de Apache httpd, redis e php-fpm.
Quando faço alterações nos principais arquivos PHP, é necessário reiniciar os serviços acima para garantir que nenhum código antigo seja armazenado em cache, o que pode (e faz) estragar o Magento.
No passado, quando eu apenas usava o httpd, simplesmente corri service httpd graceful
para reiniciar normalmente sem afetar os visitantes do site, mas agora que preciso reiniciar vários serviços (e liberar o redis), o site fica indisponível por alguns segundos.
É possível evitar isso?
Responder1
Se você olhar para o Apachedocumentaçãovocê verá que o Apache usa o USR1
sinal para isso. Como tal, é uma rotina personalizada. Você terá que verificar a documentação dos outros componentes para ver se eles oferecem ou não opções semelhantes. Um hit para php-fpm é, por exemploPodemos recarregar um dos pools PHP-FPM sem incomodar os outros?.
Se um dos componentes não tiver essa opção você não conseguirá fazê-lo com um único servidor/site. Você precisaria de algum tipo de cluster ou balanceador que permitiria redirecionar seus usuários para a nova versão e desativar a versão antiga depois de algum tempo. Uma alternativa pode ser programar a reinicialização para algum horário de baixo tráfego (por exemplo, durante a noite).