对于 php fpm 来说,“优雅重新加载”实际上意味着什么?

对于 php fpm 来说,“优雅重新加载”实际上意味着什么?

php-fpm 手册页指出对 USR2 信号的响应是:“正常重新加载所有工作进程 + 重新加载 fpm conf/binary”。然而,在测试中我发现重新加载实际上会终止正在处理请求的工作进程。我原本希望在终止并重新生成进程之前允许请求完成。

这是坏了,我的期望错误,还是测试无效?

我的测试设置:
Ubuntu 16.04 LXC 容器
安装 php7.0-fpm 和 nginx
php 脚本休眠并每秒输出倒计时通过 问题重新加载
发送请求休眠 30 秒curl
systemctl

测试结果:
请求在重新加载后立即被终止

答案1

我刚刚找到了答案:配置选项的process_control_timeout默认值被设置为 0 秒。在我看来,这是一个糟糕的默认值。

我将其设置process_control_timeout30s允许子进程在被强制终止之前最多等待 30 秒才能完成并退出。但是,这仅在后续重新加载时生效,因为需要第一次重新加载才能使此更改生效。

相关内容