使用supervisord管理swoole服务踩过的一个坑

在一次发版以后,例行去看监控的时候,我发现某一台服务器的内存使用量不正常,比其余服务的内存使用量高了将近一倍。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架构师事件

相关文章
相关标签/搜索