在一次发版以后,例行去看监控的时候,我发现某一台服务器的内存使用量不正常,比其余服务的内存使用量高了将近一倍。php
我登陆到服务器上,执行命令服务器
ps -ef | grep php | wc -l
发现,swoole服务的worker进程数量比咱们设置的数量高了一倍。swoole
若是你觉得我要写一大段迷宫似找坑经验,那你就大错特错了。架构
我凭我对swoole、supervisord的了解,很快就意识到这是因为supervisord的stopwaitsecs参数设置太短(默认10s),而swoole在收到关闭信号的时候,会等待子进程的事件循环为空才会关闭子进程,若是这个过程超过10s,主进程就会被强制kill掉,而后子进程因为没有收到关闭信号,一直没有被kill掉。pwa
解决方案很简单,将supervisord配置项改一下便可code
stopwaitsecs=60 #你也能够调的更大
填坑,有时也是很简单的。进程
更多架构、PHP、GO相关踩坑实践技巧请关注个人公众号:PHP架构师事件