何为平滑重启?
当你写该了配置需要重启php-fpm才生效,如果此时php-fpm中有请求还没有处理完,暴力重启php-fpm服务会导致当前请求执行终止,轻则502,重则会产生数据异常,因为程序执行到一半被中断了,除非你对数据的处理都做了很好的安全支持。所以,我理解的平湖重启应该是每个php-fpm子进程处理完最后一个请求就自动退出。
假设100个php-cgi进程中有40个进程正在处理PHP程序,而剩余的60个进程处于闲置状态,php-fpm接到平滑重启信号后,会kill掉60个闲置进程,然后新启动100个进程,新请求交给新启动的进程来处理,而那40个进程,只有等到它们处理完自己当前正在执行的PHP程序后,才会被干掉。
方法
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
先找到php-fpm master进程id
cat /usr/local/php/sbin/php-fpm
903
kill -USR2 903 或者 kill -SIGUSR2 903
那么,这样真的会是平滑
的吗?
测试代码:test.php
<?php
$file = 'log.log';
for($i=0