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

在一次发版之后,例行去看监控的时候,我发现某一台服务器的内存使用量不正常,比其他服务的内存使用量高了将近一倍。

我登录到服务器上,执行命令

ps -ef | grep php | wc -l

发现,swoole服务的worker进程数量比我们设置的数量高了一倍。

如果你以为我要写一大段迷宫似找坑经验,那你就大错特错了。

我凭我对swoole、supervisor的了解,很快就意识到这是由于supervisor的stopwaitsecs参数设置过短(默认10s),而swoole在收到关闭信号的时候,会等待子进程的事件循环为空才会关闭子进程,如果这个过程超过10s,主进程就会被强制kill掉,然后子进程由于没有收到关闭信号,一直没有被kill掉。

解决方案很简单,将supervisor配置项改一下即可

stopwaitsecs=60 #你也可以调的更大

填坑,有时也是很简单的。

更多架构、PHP、GO相关踩坑实践技巧请关注我的公众号:PHP架构师

PHP架构师

猜你喜欢

转载自blog.csdn.net/weixin_42900065/article/details/81475106
今日推荐