关于gatewaywork 多地域部署,亚非地区部署的问题,只有2个用户互发都出现Can not connect to tcp://xxxxxxxx:6688 Connection timed out

a178251115

我公司用了gatewayworker,需要给用户不定期推送消息,
用户有国内的和亚非地区
采用了分布式部署,
香港一个100M的物理机上用了register,business和gateway
国内也用了一个物理机部署business和gateway,
测试的时候,两个用户连接国内的gateway互发消息,
稍微发送快一点就会出现gateway.php 1300行报错,throw new Exception('Can not connect to tcp://' . $register_address . ' ' . $errmsg);

gateway.php 744行 报错
stream_socket_client("tcp://$address", $errno, $errmsg, static::$connectTimeout);

gateway.php 是才下载的消息发送方法,集成在thinkphp中使用

请问下大家,多地域部署保证消息的送达有没有什么好的方法

2527 2 0
2个回答

q13113671764

看看超时时间是多久,再写个测试看看两台服务器通讯消耗的时间,看看是不是因为连接太久超时断了.要保证消息送达肯定是保存到redis或者mysql里面去

  • a178251115 2021-01-29

    没用,测试了改成15秒,还是一样报错,

  • q13113671764 2021-01-29

    @7748:是叫你: 写个测试看看两台服务器通讯消耗的时间,不是叫你改超时时间,现在问题出在哪都不知道,不先去定位好问题出在哪,靠什么去修复

  • q13113671764 2021-01-29

    还有,你上面描述的是发送快一点就会出现错误,你确定是发送快才错误,发送慢就正常可以发送?
    你知道为啥别人不回你不,因为你提供这些东西都是要别人靠经验猜问题在哪的,别人根本就不知道怎么回你.

MarkGo

非专线是有这个问题的,并非发送快才这样,而是偶尔出境路由会自动丢包,
你在境外和境内同时打开mtr,查看下是否北京的一个节点丢包率特别高就知道了。

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