webman框架经常重启或者关闭之后,htop发现存在僵尸进程

php_worker_lu

webman框架经常重启或者关闭之后,htop发现存在僵尸进程,确定不是pid文件被覆盖的问题。重启跟stop都正常。之前用workorman3.4的版本是没有出现这种现象的。现在webman中workerman版本4.0.19。请问从什么地方排查原因呢?



查看worker.log

这个是僵尸进程的运行内容

1763 1 0
1个回答

walkor

这个不是僵尸进程,是进程没有退出干净。

看下业务代码是否用了pcntl_fork

另外启动后 ps auxf 看下webman进程关系并截图,stop后出现僵尸进程后 ps auxf 看下进程关系并截图。

  • php_worker_lu 2022-02-24

    项目搜索pcntl_fork,只在worker.php上存在使用。出现频率蛮高,开发期间几天会出现一次,生产环境也在更新版本时出现了。等下次出现在评论中截图

  • walkor 2022-02-24

    嗯,stop前ps auxf 下,stop后出现僵尸进程后ps auxf下

  • php_worker_lu 2022-02-25

    已经在问题中截图了,帮忙看看

  • php_worker_lu 2022-02-25

    可以看到start.php已经退出了,但是busniessworker.php却没有正常退出,出现了两份进程

  • walkor 2022-02-25

    标明下截图里哪个是stop前,哪个是stop后的

  • php_worker_lu 2022-02-25

    现在是两个进程同时存在的,都是之后的

  • walkor 2022-02-25

    得看下stop之前和之后的。把没用的进程kill干净测试

  • php_worker_lu 2022-02-25

    我截图了worker.log进程重名报错,这个是最早出现时候worker的报错提示

  • walkor 2022-02-25

    conflict 那个是因为有残余进程导致的。

  • php_worker_lu 2022-02-25

    测试并不是很容易出现,时而会出现,我自己测试了很多次没有出现

  • php_worker_lu 2022-02-25

    conflict 之前那个remains有关系吗

  • walkor 2022-02-25

    你们服务器启动的时候用start -d守护进程模式,不要用debug模式

  • walkor 2022-02-25

    debug模式在本地开发的时候用

  • php_worker_lu 2022-02-25

    现在是在本地的服务端出现的,之前就是收到kill掉,后面发现线上生产环境-d守护模式也出现了

  • walkor 2022-02-25

    workerman 信号相关做了一些优化,更新到 workerman 4.0.29 试下。 composer require workerman ^4.0.29

  • php_worker_lu 2022-02-28

    好勒,谢谢老大

年代过于久远,无法发表回答
🔝