我公司用了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中使用
请问下大家,多地域部署保证消息的送达有没有什么好的方法
看看超时时间是多久,再写个测试看看两台服务器通讯消耗的时间,看看是不是因为连接太久超时断了.要保证消息送达肯定是保存到redis或者mysql里面去
没用,测试了改成15秒,还是一样报错,
@7748:是叫你: 写个测试看看两台服务器通讯消耗的时间,不是叫你改超时时间,现在问题出在哪都不知道,不先去定位好问题出在哪,靠什么去修复
还有,你上面描述的是发送快一点就会出现错误,你确定是发送快才错误,发送慢就正常可以发送?
你知道为啥别人不回你不,因为你提供这些东西都是要别人靠经验猜问题在哪的,别人根本就不知道怎么回你.
非专线是有这个问题的,并非发送快才这样,而是偶尔出境路由会自动丢包,
你在境外和境内同时打开mtr,查看下是否北京的一个节点丢包率特别高就知道了。