php start.php start -d出现问题

使用php start.php start -d启动workman,然后使用php start.php stop停止,发现停止不了,但是workman确实退出了,然后使用ps aux|grep WorkerMan查看,发现每次运行
php start.php start -d,都启动了2个进行,其中一个包含了子进程(,状态是Ss的这个进程,这个是问题的关键),需要使用kill -9 才能杀死
bug.png
已邀请:

walkor

赞同来自:

截图下 php start.php start -d 启动界面
php start.php stop 界面
 
然后把进程全部停止,不要有workerman进程启动,
运行 strace php start.php start -d
截图所有结果,尤其最后一部分
 

不_唁 - 90后PHPer

赞同来自:

1.启动

启动.png

 
2. 运行 ps aux|grep WorkerMan

多了个子进程.png

 
 
3. 然后stop ,可以看见失败,但是worker进程和getway进程已经kill了

top.png

 
4. top后再运行 ps aux|grep WorkerMan 发现start命令的进程还在

top后.png

 

不_唁 - 90后PHPer

赞同来自:

使用strace php start.php start -d后最后的截图如下
strace.png

不_唁 - 90后PHPer

赞同来自:

正常服务器运行 ps aux|grep WorkerMan 后的截图
正常服务器.png

可以看出,不正常的服务器运行start后,多了一个子进程

1111.png

,引起stop后,start命令的进程无法正常退出

不_唁 - 90后PHPer

赞同来自:

strace php start.php start -d 全部截图如下
a1.png


a2.png


a3.png


a4.png


a5.png


a6.png


a7.png


a8.png


a9.png


a10.png


a11.png


a12.png


a13.png


a14.png


a15.png


a16.png


a17.png


a18.png


a19.png


a20.png


a21.png


a22.png


a23.png


a24.png


a25.png

 

walkor

赞同来自:

有可能是你php版本有bug,换个版本试下吧。
另外代码里是否调用了pcntl_fork函数?

walkor

赞同来自:

对比下看下环境哪里不同,比如扩展。
还有strace下Ss状态的进程看下它在干什么

要回复问题请先登录注册