我正在通过 Apache httpd、redis 和 php-fpm 的组合运行一个资源密集型的基于 Magento 的网站。
当我对核心 PHP 文件进行更改时,需要重新启动上述服务以确保没有缓存旧代码,因为这可能会(并且确实)搞砸 Magento。
过去,当我刚使用 httpd 时,我只需运行service httpd graceful
即可正常重启,而不会影响网站访问者,但现在我必须重新启动几个服务(并刷新 redis),网站将无法使用几秒钟。
有可能避免这种情况吗?
答案1
如果你看一下 Apache文档您将看到 ApacheUSR1
为此使用了信号。因此,这是一个自定义例程。您必须查看其他组件的文档,以了解它们是否提供类似的选项。php-fpm 的一个匹配项是例如我们可以在不影响其他池的情况下重新加载其中一个 PHP-FPM 池吗。
如果某个组件没有这样的选项,您将无法使用单个服务器/站点来实现这一点。您需要某种集群或平衡器,以便您可以将用户重定向到新版本并在一段时间后关闭旧版本。另一种选择可能是安排在流量较低的时间(例如在夜间)重新启动。