题记:tmd kill -USR2 并不优雅,正在处理请求的进程当即就被干死了
分析:
- kill -USR2 main-pid 时都发生了什么?(把error level调到debug级别可以看到一些信息)
- 发送 SIGQUIT(3)给每个子进程,如果进程闲着,那么就直接退出了,如果没闲着,就继续干自己的活,看来 SIGQUIT(3)才更优雅:
- 等待 process_control_timeout 时间后,向还活着的子进程发送SIGTERM(15)信号,子进程接到这个信号后就只能死了
- 如果process_control_timeout设置时间比较长,而且当前有个请求还需要很长时间才能处理完,那么,main-pid就傻等到process_control_timeout或者请求被处理完才reload,在此期间,将不会有新的请求被处理,而是积压在系统层
- 发送 SIGQUIT(3)给每个子进程,如果进程闲着,那么就直接退出了,如果没闲着,就继续干自己的活,看来 SIGQUIT(3)才更优雅:
- 我期望的是:
- main-pid接到reload信号后,发送“收工”信号给所属子进程,main-pid开始reload;子进程空闲则自动退出,子进程不空闲则处理完请求退出(不知道系统层有没有还积压的请求)
- 简单修改一下可以表现出来我想要的:(但是,在没有阅读全部fpm代码时我不会这么简单修改就线上使用的)
The post 关于php-fpm appeared first on PHPor 的Blog.
网友评论已有0条评论, 我也要评论