webman框架经常重启或者关闭之后,htop发现存在僵尸进程,确定不是pid文件被覆盖的问题。重启跟stop都正常。之前用workorman3.4的版本是没有出现这种现象的。现在webman中workerman版本4.0.19。请问从什么地方排查原因呢?
查看worker.log 这个是僵尸进程的运行内容
这个不是僵尸进程,是进程没有退出干净。
看下业务代码是否用了pcntl_fork
另外启动后 ps auxf 看下webman进程关系并截图,stop后出现僵尸进程后 ps auxf 看下进程关系并截图。
ps auxf
项目搜索pcntl_fork,只在worker.php上存在使用。出现频率蛮高,开发期间几天会出现一次,生产环境也在更新版本时出现了。等下次出现在评论中截图
嗯,stop前ps auxf 下,stop后出现僵尸进程后ps auxf下
已经在问题中截图了,帮忙看看
可以看到start.php已经退出了,但是busniessworker.php却没有正常退出,出现了两份进程
标明下截图里哪个是stop前,哪个是stop后的
现在是两个进程同时存在的,都是之后的
得看下stop之前和之后的。把没用的进程kill干净测试
我截图了worker.log进程重名报错,这个是最早出现时候worker的报错提示
conflict 那个是因为有残余进程导致的。
测试并不是很容易出现,时而会出现,我自己测试了很多次没有出现
conflict 之前那个remains有关系吗
你们服务器启动的时候用start -d守护进程模式,不要用debug模式
start -d
debug模式在本地开发的时候用
现在是在本地的服务端出现的,之前就是收到kill掉,后面发现线上生产环境-d守护模式也出现了
workerman 信号相关做了一些优化,更新到 workerman 4.0.29 试下。 composer require workerman ^4.0.29
composer require workerman ^4.0.29
好勒,谢谢老大
这个不是僵尸进程,是进程没有退出干净。
看下业务代码是否用了pcntl_fork
另外启动后
ps auxf
看下webman进程关系并截图,stop后出现僵尸进程后ps auxf
看下进程关系并截图。项目搜索pcntl_fork,只在worker.php上存在使用。出现频率蛮高,开发期间几天会出现一次,生产环境也在更新版本时出现了。等下次出现在评论中截图
嗯,stop前ps auxf 下,stop后出现僵尸进程后ps auxf下
已经在问题中截图了,帮忙看看
可以看到start.php已经退出了,但是busniessworker.php却没有正常退出,出现了两份进程
标明下截图里哪个是stop前,哪个是stop后的
现在是两个进程同时存在的,都是之后的
得看下stop之前和之后的。把没用的进程kill干净测试
我截图了worker.log进程重名报错,这个是最早出现时候worker的报错提示
conflict 那个是因为有残余进程导致的。
测试并不是很容易出现,时而会出现,我自己测试了很多次没有出现
conflict 之前那个remains有关系吗
你们服务器启动的时候用
start -d
守护进程模式,不要用debug模式debug模式在本地开发的时候用
现在是在本地的服务端出现的,之前就是收到kill掉,后面发现线上生产环境-d守护模式也出现了
workerman 信号相关做了一些优化,更新到 workerman 4.0.29 试下。
composer require workerman ^4.0.29
好勒,谢谢老大