3.5.21 Gateway多进程启动失败 bug

aidong_wang

Gateway升级3.5.21 后,遇到启动 Gateway worker 报错: Address already in use
但 Gateway Worker 实际成功启动的情况:
 
 
这个应该是 bug 吧? 只有一个 Gateway Worker 启动了,其他Gateway worker因为端口冲突,全都没能启动

2589 5 0
5个回答

智佳思远

端口冲突了当然不能启动了。
配置nginx或者apache如果端口冲突了也是一样启动不了啊
 
把端口改成不冲突的不就好了

  • aidong_wang 2019-09-02

    我再详细解释下:

    从截图中可以看出,并不是 Gateway Worker 跟其他进程监听的端口冲突了,因为有一个 Gateway Worker 是成功的监听了端口,只是另外 9 个 Gateway Worker 因为监听端口失败导致的无法启动

aidong_wang

我总共准备启动 15 个 worker,但是只成功启动了 1 个,其他的 Gateway worker 报错说 端口 Address already in use

  • 智佳思远 2019-09-02

    那就把冲突的端口改了呗。。。

  • aidong_wang 2019-09-03

    哥们你到底看明白问题没啊,这是 GatewayWorker 之间互相冲突啊,不是跟其他进程冲突啊。再说 GatewayWorker 端口是对外提供服务的,你改了外部物联网设备怎么办?

  • 智佳思远 2019-09-03

    那就是你gatewaWorker之前配置的端口配置冲突了啊,一般是startPort端口范围冲突。
    还有一种情况,比如你升级GatewayWorker没stop,然后就覆盖重新启动,老的进程还在,那就会和老的进程冲突。

  • 智佳思远 2019-09-03

    http://doc.workerman.net/faq/workerman-start-fail.html 这个里给你找了下手册,这里有提到端口冲突怎么定位。

  • aidong_wang 2019-09-03

    发帖之前已经试过文档里提的方法,并且诡异的是我重启了机器,再启动 Gateway 还是一样的报错。所以,现在的问题是启动多个 Gateway Worker 和 多个 Internal Gateway Worker居然有冲突,我现在把这两个 Worker 的 count 设置是 1 启动是没问题的,但是设置为大于 1 的时候,就会有冲突了

aidong_wang

补充一下,可能是 Composer update 之前没有stop 所有的 worker

  • 智佳思远 2019-09-03

    没stop肯定冲突啊

  • aidong_wang 2019-09-03

    是,关键问题我现在已经 stop 了之后,再启动还是冲突,甚至机器都重启过了

  • aidong_wang 2019-09-03

    所以,现在的问题是如何启动多个 Gateway Worker 和 多个 Internal Gateway Worker,我现在把这两个 Worker 的 count 设置是 1 启动是没问题的,但是设置为大于 1 的时候,就会有冲突了

  • aidong_wang 2019-09-03

    并且,不是代码配置和 Workerman 的问题,同样的配置在测试环境是没有问题,顺利启动。

  • czf 2021-08-06

    docker 运行不会存在问题

walkor

把所有gateway的strarPort设置为不同的端口,并且间隔大一些。比如
 
$gateway1->startPort = 2300;
 
$gateway2->startProt = 3300;
 
间隔1000

  • coolhc 2021-08-05

    你好,我这就把demo拿来跑出现了一样的问题,端口确定没占用

coolhc

我碰到了同样的问题,单进程启动无报错信息,多进程会报错导致只会成功启动一个gatway进程,请问最后怎么解决的?

  • 智佳思远 2021-08-10

    多进程启动肯定是没问题的,我很多项目都是多进程跑。贴报错和start_gateway.php代码看下呢

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