国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Workerman-RPC拋出recvData異常問題,急!

xiewen_kevin

Hi,walkor,

  目前該問題已是在生產(chǎn)項目上,我在PHP腳本里面直接引用RPCclient.php,然后遠程調(diào)用RPC服務(wù)器往數(shù)據(jù)庫里寫數(shù)據(jù),腳本執(zhí)行完一段時間后發(fā)現(xiàn)腳本的進程退出了,看了一下日志是RPC拋異常了:Uncaught exception 'Exception' with message 'recvData empty',導(dǎo)致腳本進程退出

我有幾點想請問一下:
1,Uncaught exception 'Exception' with message 'recvData empty'是什么原因?qū)е碌??,我看了下代碼是沒有問題的(因為正常跑過一段時間),看了下RPC服務(wù)器中workerman.log中也沒異常日志,
2,遠程請求RPC時,Uncaught exception 'Exception' with message 'recvData empty' 這種異常是不能避免的嗎?
3.如果我有asend_ 異常方法調(diào)用的話,會出現(xiàn)這種異常嗎?如果出現(xiàn)了,但對腳本進程有影響嗎?

謝謝walkor解答!

5387 5 0
5個回答

walkor 打賞

recvData empty 意思是客戶端發(fā)給服務(wù)端的請求超過5秒還沒有返回結(jié)果,也就是說rpc服務(wù)端處理超時了。
應(yīng)該是rpc的業(yè)務(wù)比較慢導(dǎo)致的。具體為什么慢需要你們自己定位,可能是msyql語句執(zhí)行的慢、可能是curl訪問外部接口慢等等原因。

https://github.com/walkor/workerman-JsonRpc/blob/master/Applications/JsonRpc/Clients/RpcClient.php#L56
超時時間是這里設(shè)置的,超時時間默認是5秒。

asend_ 異常方法調(diào)用的話,如果服務(wù)端超時,也會出現(xiàn)這種異常。

  • xiewen_kevin 2017-04-13

    好的 謝謝walkor, 我這邊的業(yè)務(wù)是輪詢新聞消息池,消息池里面有消息的話,就不斷的遠程調(diào)用workerman-RPC,每條傳輸?shù)臄?shù)據(jù)大約3k左右,昨天我換了asend_ 異部調(diào)用,今天查看了下Log日志,發(fā)現(xiàn)WORKER EXIT UNEXPECTED E_ERROR Allowed memory size of 335544320 bytes exhausted (tried to allocate 65536 bytes),允許的內(nèi)存用盡了,是不是asend_異常不適合這種大量請求的業(yè)務(wù)場景? 調(diào)用RPC的時候是不是發(fā)送數(shù)據(jù)不宜過大?

xiewen_kevin

RPC方法里面的業(yè)務(wù) 主要是將新聞資訊等寫入數(shù)據(jù)庫

  • 暫無評論
walkor 打賞

WORKER EXIT UNEXPECTED E_ERROR Allowed memory size of 335544320 bytes exhausted (tried to allocate 65536 bytes)
看起來像是客戶端給rpc服務(wù)端發(fā)起了超大的請求導(dǎo)致的。
不過也有可能是業(yè)務(wù)有內(nèi)存泄漏導(dǎo)致的。

  • 暫無評論
xiewen_kevin

是的 內(nèi)存滿了,walkor ,我找到原因在哪里了,是因為腳本不斷通過異常方式asend_ 遠程調(diào)用RPC服務(wù)導(dǎo)致連接數(shù)(connections)不斷增加導(dǎo)致的,我在測試機上測試了一下,把RPC服務(wù)里面被調(diào)用的方法的業(yè)務(wù)全部注釋掉了,只留一個空方法,結(jié)果還是一樣,達到一定連接數(shù)時,內(nèi)存就滿了(如附件圖所示)
測試的時候,status里面顯示connections是不斷增加的,連接并沒有釋放掉

請問一下,asend_ 異步調(diào)用rpc服務(wù)后不會馬上就斷開連接的嗎? 如果不是,那連接是什么時候斷開的呢?

  • 暫無評論
walkor 打賞

asend_會建立鏈接
arecv_會關(guān)閉鏈接
看看是不是沒有調(diào)用arecv_

  • xiewen_kevin 2017-04-13

    好的 謝謝walkor,沒有調(diào)用 arecv_,現(xiàn)在代碼已經(jīng)加上,再跑一天試試

年代過于久遠,無法發(fā)表回答
??