我为同一主机提供了多个PHP-FPM UNIX套接字池,以便对代码库/功能进行逻辑分离,并解决相同的未来扩展问题.Nginx根据URI模式管理到正确套接字的路由.部署工作正常.
每当我更改任何一个池配置时,我正在重新加载/重新启动FPM进程(通过USR2信号).
我不知道FPM的内部是如何工作的,但我认为当我重新启动主进程时,所有池都会重新启动/重新加载.如果我错了,请纠正我.
我想知道当其他人按原样工作时是否可以重新加载/重新启动一个池(这些池中正在进行的事务中没有问题).
我还要感谢任何其他配置建议,这些建议可以让我拥有所需的池管理
reg*_*ero 42
php-fpm允许正常重启子进程,通常使用reload关键字而不是restartinit脚本,发送USR2信号.
因此,通过正常重启,您不应该丢失任何正在运行的事务.在每个人的当前请求管理结束后,孩子们被杀死.如果您不需要真正的重启,这应该足够了.我做了一些测试,例如重新加载足以:
所以我没有找到需要真正重启的情况.除了重新加载无法启动已停止的服务.
如果要确保在要重新加载其中一个池时永远不会重新加载其他池,则必须管理多个php-fpm守护程序和每个守护程序一个池.这意味着要编写几个init脚本和主配置文件.
使用restart关键字更危险,尤其是因为init脚本可能会在停止步骤中杀死长时间运行的子节点.并且有几个守护进程使用多个PID和配置文件进行管理,你甚至可以获得start-stop-daemon带有--exec选项的命令(在debian中就是这种情况),这会杀死所有运行相同php-fpm可执行文件的守护进程(有效地向所有人发送kill -9)如果你运行几个php-fpm进程,那么在使用正确的PID停止正确的PID之后的其他并行php-fpm守护进程,这是非常糟糕的).
因此必须使用reload关键字(USR2信号).
小智 7
尽管已经有最佳答案,但我写信是为了提供最佳答案中遗漏的更多信息。
这导致了一些事实和问题:
| 归档时间: |
|
| 查看次数: |
30676 次 |
| 最近记录: |