我公司用了gatewayworker,需要給用戶不定期推送消息,
用戶有國(guó)內(nèi)的和亞非地區(qū)
采用了分布式部署,
香港一個(gè)100M的物理機(jī)上用了register,business和gateway
國(guó)內(nèi)也用了一個(gè)物理機(jī)部署business和gateway,
測(cè)試的時(shí)候,兩個(gè)用戶連接國(guó)內(nèi)的gateway互發(fā)消息,
稍微發(fā)送快一點(diǎn)就會(huì)出現(xiàn)gateway.php 1300行報(bào)錯(cuò),throw new Exception('Can not connect to tcp://' . $register_address . ' ' . $errmsg);
和
gateway.php 744行 報(bào)錯(cuò)
stream_socket_client("tcp://$address", $errno, $errmsg, static::$connectTimeout);
gateway.php 是才下載的消息發(fā)送方法,集成在thinkphp中使用
請(qǐng)問(wèn)下大家,多地域部署保證消息的送達(dá)有沒有什么好的方法
看看超時(shí)時(shí)間是多久,再寫個(gè)測(cè)試看看兩臺(tái)服務(wù)器通訊消耗的時(shí)間,看看是不是因?yàn)檫B接太久超時(shí)斷了.要保證消息送達(dá)肯定是保存到redis或者mysql里面去
@7748:是叫你: 寫個(gè)測(cè)試看看兩臺(tái)服務(wù)器通訊消耗的時(shí)間,不是叫你改超時(shí)時(shí)間,現(xiàn)在問(wèn)題出在哪都不知道,不先去定位好問(wèn)題出在哪,靠什么去修復(fù)
還有,你上面描述的是發(fā)送快一點(diǎn)就會(huì)出現(xiàn)錯(cuò)誤,你確定是發(fā)送快才錯(cuò)誤,發(fā)送慢就正??梢园l(fā)送?
你知道為啥別人不回你不,因?yàn)槟闾峁┻@些東西都是要?jiǎng)e人靠經(jīng)驗(yàn)猜問(wèn)題在哪的,別人根本就不知道怎么回你.
非專線是有這個(gè)問(wèn)題的,并非發(fā)送快才這樣,而是偶爾出境路由會(huì)自動(dòng)丟包,
你在境外和境內(nèi)同時(shí)打開mtr,查看下是否北京的一個(gè)節(jié)點(diǎn)丟包率特別高就知道了。