我公司用了gatewayworker,需要給用戶不定期推送消息,
用戶有國內(nèi)的和亞非地區(qū)
采用了分布式部署,
香港一個100M的物理機上用了register,business和gateway
國內(nèi)也用了一個物理機部署business和gateway,
測試的時候,兩個用戶連接國內(nèi)的gateway互發(fā)消息,
稍微發(fā)送快一點就會出現(xiàn)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 是才下載的消息發(fā)送方法,集成在thinkphp中使用
請問下大家,多地域部署保證消息的送達有沒有什么好的方法
看看超時時間是多久,再寫個測試看看兩臺服務(wù)器通訊消耗的時間,看看是不是因為連接太久超時斷了.要保證消息送達肯定是保存到redis或者mysql里面去
@7748:是叫你: 寫個測試看看兩臺服務(wù)器通訊消耗的時間,不是叫你改超時時間,現(xiàn)在問題出在哪都不知道,不先去定位好問題出在哪,靠什么去修復(fù)
還有,你上面描述的是發(fā)送快一點就會出現(xiàn)錯誤,你確定是發(fā)送快才錯誤,發(fā)送慢就正??梢园l(fā)送?
你知道為啥別人不回你不,因為你提供這些東西都是要別人靠經(jīng)驗猜問題在哪的,別人根本就不知道怎么回你.
非專線是有這個問題的,并非發(fā)送快才這樣,而是偶爾出境路由會自動丟包,
你在境外和境內(nèi)同時打開mtr,查看下是否北京的一個節(jié)點丟包率特別高就知道了。