websocket restart命令执行后总是提示端口被占用,需要手动kill此端口才行

好想睡觉
Workerman[workerman:im] restart 
Workerman[workerman:im] is stopping ...
Workerman[workerman:im] stop success
stream_socket_server(): unable to connect to tcp://0.0.0.0:9999 (Address already in use) in file /www/wwwroot/webim.1plm.com/vendor/workerman/workerman/Worker.php on line 2214

   Exception  : Address already in use

以前用户数少的时候没出现此问题

2475 3 0
3个回答

walkor 打赏

可能是你的业务创建了新的进程,比如运行了pcntl_fork exec 等代码,创建的进程没有被回收导致的。
你可以把自己的业务逻辑注释掉,看是否有问题。

  • 好想睡觉 2022-07-28

    线上没法注释业务逻辑,开发环境没问题.... 我是在onWorkerStart另外监听了一个端口,这个端口收到消息后,会请求一些http来完成业务,是不是这些没办法强制关闭

  • walkor 2022-07-28

    9999端口是在onWorkerStart监听的么?
    启动后执行 ps auxf,截图下workerman部分。
    重启后报错后执行 ps auxf,截图下workerman部分。
    对比两次ps auxf能看出来哪个进程没回收,
    看下占用9999端口的进程名是什么

meows

说明还有worker 进程没有正常退出,你查看下进程列表很容易就知道了。

  • wangwx1992@163.com 2022-12-13

    正常使用stop命令关闭,什么情况下会进程会有没正常退出的

Tinywan

启动了多个?

  • 暂无评论
年代过于久远,无法发表回答
×
🔝