Estoy ejecutando un sitio basado en Magento con bastantes recursos a través de una combinación de Apache httpd, redis y php-fpm.
Cuando hago cambios en los archivos principales de PHP, es necesario reiniciar los servicios anteriores para asegurarme de que no se almacene en caché ningún código antiguo que pueda (y de hecho lo hace) arruinar Magento.
En el pasado, cuando solo usaba httpd, simplemente ejecutaba service httpd graceful
para reiniciar correctamente sin afectar a los visitantes del sitio, pero ahora que tengo que reiniciar varios servicios (y vaciar redis), el sitio web no está disponible durante unos segundos.
¿Es posible evitar esto?
Respuesta1
Si miras al ApachedocumentaciónVerás que Apache usa la USR1
señal para esto. Como tal, es una rutina personalizada. Tendrás que consultar la documentación de los otros componentes para ver si ofrecen o no opciones similares. Un éxito para php-fpm es, por ejemplo¿Podemos recargar uno de los grupos PHP-FPM sin molestar a los demás?.
Si uno de los componentes no tiene dicha opción, no podrá hacerlo con un solo servidor/sitio. Necesitaría algún tipo de clúster o equilibrador que le permitiera redirigir a sus usuarios a la nueva versión y desactivar la versión anterior después de un tiempo. Una alternativa podría ser programar el reinicio para un momento de poco tráfico (por ejemplo, durante la noche).