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 才能杀死

10941 7 0
7个回答

walkor

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

  • 不_唁 2019-06-04

    我是分布式部署的,这台部署的是getway服务和worker服务,register服务在另一台上,正常运行的

  • 不_唁 2019-06-04

    下面我贴出来了,您看一下

不_唁

1.启动

[attach]2085[/attach]
 

  1. 运行 ps aux|grep WorkerMan

[attach]2086[/attach]
 
 

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

[attach]2087[/attach]
 

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

[attach]2088[/attach]
 

  • 暂无评论
不_唁

使用strace php start.php start -d后最后的截图如下
[attach]2089[/attach]

  • 暂无评论
不_唁

正常服务器运行 ps aux|grep WorkerMan 后的截图
[attach]2090[/attach]
可以看出,不正常的服务器运行start后,多了一个子进程

[attach]2091[/attach]
,引起stop后,start命令的进程无法正常退出

  • 暂无评论
不_唁

strace php start.php start -d 全部截图如下
[attach]2092[/attach]

[attach]2093[/attach]

[attach]2094[/attach]

[attach]2095[/attach]

[attach]2096[/attach]

[attach]2097[/attach]

[attach]2098[/attach]

[attach]2099[/attach]

[attach]2100[/attach]

[attach]2101[/attach]

[attach]2102[/attach]

[attach]2103[/attach]

[attach]2104[/attach]

[attach]2105[/attach]

[attach]2106[/attach]

[attach]2107[/attach]

[attach]2108[/attach]

[attach]2109[/attach]

[attach]2110[/attach]

[attach]2111[/attach]

[attach]2112[/attach]

[attach]2113[/attach]

[attach]2114[/attach]

[attach]2115[/attach]

[attach]2116[/attach]
 

  • 暂无评论
walkor

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

  • 不_唁 2019-06-05

    两台服务器的php版本是一样的,都是5.6.10,其中一台是正常的

  • 不_唁 2019-06-05

    代码里没有调用过你说的那个函数

walkor

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

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