现象: QA对线上服务进行验收后,没人任何人操作的情况下,php-fpm自动终止了。 结果是线上服务在QA验收通过后一段时间挂了。

经过推演和日志佐证,暂时得出的结论是: 运维人员使用pkill -9 终止php-fpm后,忘记启动了。

推演出来的原因: pkill -9会先枚举php-fpm所有的进程,然后逐个kill -9操作。 枚举完成后,kill掉php-fpm的master之前,有可能master会产生新的worker,这个间隙的worker成为漏网之鱼,当worker到达设定的响应次数后,自动退出。

除了php-fpm,所有master/worker机制工作的服务,都存在此类问题,比如:nginx 这类服务在运维的时候,需要用标准方式,或者pkill两遍,来避免此问题。

标签: killall, php-fpm, pkill

添加新评论