php-fpm 手册页指出对 USR2 信号的响应是:“优雅地重新加载所有工人 + 重新加载 fpm conf/二进制文件”。但是,在测试中,我发现重新加载实际上会杀死处理请求的工作人员。我期待在进程被杀死并重新产生之前允许请求完成。
这是坏的,我的期望错误,还是测试无效?
我的测试设置:
Ubuntu 16.04 LXC 容器
安装 php7.0-fpm 和 nginx
php 脚本以睡眠并输出倒计时每秒
通过curl
问题重新加载发送睡眠请求 30 秒systemctl
测试结果:
重新加载时请求立即被杀死
我刚刚找到我的答案:配置选项process_control_timeout设置为默认值 0 秒。在我看来,这是一个可怕的默认。
我设置process_control_timeout为值30s以允许子进程在被强行杀死之前最多 30 秒完成并退出。但是,这仅在后续重新加载时生效,因为需要第一次重新加载才能使此更改生效。
| 归档时间: |
|
| 查看次数: |
5217 次 |
| 最近记录: |