gateway_client 连接 workerman的时候会不定时的出现 getAllGatewayAddressesFromRegister fail.

0

我遇到一个问题,gateway_client 连接 workerman的时候会不定时的出现 这个错误,


图片


我抓包发现是register 主动发了rst包,


图片


这种情况怎么处理比较好?


下面是我thinkphp5 里面 bind 的代码


图片


---==================================------------
【群主】walkor(2202055656) 18:18:12
网络问题?
【群主】walkor(2202055656) 18:18:46
gateway_client 和 gatewayWorker是本机么?本机的话用127.0.0.1
【活跃】jocke(185291445) 18:24:22
是本机,
【群主】walkor(2202055656) 18:24:50
本机用127.0.0.1 ,这样不走网卡试下
【活跃】jocke(185291445) 18:24:53
但是考虑后面可能会起多台gateway worker
【活跃】jocke(185291445) 18:25:20
好的,
【群主】walkor(2202055656) 18:25:25
对了,你是不是使用了ReactPHP?
【活跃】jocke(185291445) 18:25:41
稍等,我看下
【群主】walkor(2202055656) 18:25:52
php start.php status 看看
【活跃】jocke(185291445) 18:26:11


图片


【活跃】jocke(185291445) 18:26:25
是有reactphp
【群主】walkor(2202055656) 18:26:49
有用reactPHP的组件没?
【群主】walkor(2202055656) 18:26:58
可以去掉reactphp不?
【活跃】jocke(185291445) 18:27:01
暂时没有
【活跃】jocke(185291445) 18:27:44
后面有个业务需要在wm里面调其他地方接口,我就加了这个,暂时没用上,我先去掉试试
【群主】walkor(2202055656) 18:28:22
嗯,去掉就好了
【群主】walkor(2202055656) 18:28:31
我看看是怎么回事
【活跃】jocke(185291445) 18:28:45
这是啥原理?
【活跃】jocke(185291445) 18:29:02
我在写问答了,呆会发上去,给后面其他人做参考

已邀请:

walkor

赞同来自: notcry

@notcry
出现这个问题后运行 php start.php status 截图下

walkor

赞同来自:

是reactPHP react/event-loop的bug,
https://github.com/reactphp/event-loop/issues/42
定时器不精确,导致register服务提前关闭了链接。
它们主干已经修复,但是composer安装的版本没有修复。


解决办法:
1、更新reactphp/event-loop主干的代码
2、不使用ReactPHP
3、安装libevent扩展或者event扩展(这个bug只有在没装这两个扩展的时候才会触发)

tufei

赞同来自:

谢谢拉

notcry - 70后球状闪电

赞同来自:

@walkor 您好


我也出现和楼主同样的问题。


我是阿里云的Cent OS服务器。PHP 7.2.26, ThinkPHP5.1,用composer安装了GatewayClient


我在Linux中的crontab有个每一分钟执行的计划任务,任务中调用的PHP文件的代码是通过Gateway::sendToGroup()给一个组推送消息,成功和失败都记录日志,查日志的话,经常性的会出现“Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238"”。
成功和失败的概率是1:2左右。


在这个时候,我执行php start.php status 查看,
event-loop对应的值是“\Workerman\Events\Select”


我按照您提的第三点,给PHP安装了event扩展。
这时执行php start.php status查看,
event_loop对应的值变成了“\Workerman\Events\Event”


本以为安装event之后就会搞定此问题,结果发现没有什么变化。还是会出现同样的情况。


您还有什么思路吗? 请给予指点,非常感谢~~ !!

notcry - 70后球状闪电

赞同来自:

![截图时间为10:45左右。](//wenda.workerman.net/uploads/20210618/1860cc08ff8f8c.png "截图时间为10:45左右。")


感谢大神关注。 截图时间是10:45左右,这个时间点前后的日志如下:


[2021-06-18T10:33:01+08:00][info] heartbeat success : 2021-06-18 10:33:01 : 
[2021-06-18T10:34:01+08:00][info] heartbeat fail : 2021-06-18 10:34:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:35:01+08:00][info] heartbeat fail : 2021-06-18 10:35:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:36:01+08:00][info] heartbeat fail : 2021-06-18 10:36:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:37:01+08:00][info] heartbeat fail : 2021-06-18 10:37:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:38:02+08:00][info] heartbeat fail : 2021-06-18 10:38:02 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:39:01+08:00][info] heartbeat success : 2021-06-18 10:39:01 :
[2021-06-18T10:40:01+08:00][info] heartbeat success : 2021-06-18 10:40:01 :
[2021-06-18T10:41:01+08:00][info] heartbeat success : 2021-06-18 10:41:01 :
[2021-06-18T10:42:01+08:00][info] heartbeat fail : 2021-06-18 10:42:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:43:01+08:00][info] heartbeat fail : 2021-06-18 10:43:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:44:01+08:00][info] heartbeat success : 2021-06-18 10:44:01 :
[2021-06-18T10:45:02+08:00][info] heartbeat fail : 2021-06-18 10:45:02 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:46:01+08:00][info] heartbeat fail : 2021-06-18 10:46:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)
[2021-06-18T10:47:01+08:00][info] heartbeat fail : 2021-06-18 10:47:01 : Gateway::getAllGatewayAddressesFromRegister() with registerAddress:"127.0.0.1:1238" return array (
)

notcry - 70后球状闪电

赞同来自:

要回复问题请先登录注册