請教一下, workerman結(jié)合ci框架, 在定時調(diào)用ci的model方法時, 內(nèi)存緩慢的增加, 有什么思路可以解決?
如下圖, 是跑了3個月后的內(nèi)存情況
?
[attach]1755[/attach]
?
可能是ci框架或者業(yè)務(wù)代碼有內(nèi)存泄漏。
最簡單的方法是按照手冊設(shè)置下處理一定數(shù)量請求后重啟進(jìn)程。
參考手冊 http://doc.workerman.net/faq/max-requests.html
?
另外看到每個進(jìn)程的連接數(shù)很多,7-8千,這個感覺不正常。服務(wù)端返回數(shù)據(jù)完畢后最好把連接關(guān)閉,避免連接數(shù)不斷增加造成內(nèi)存泄漏。
好的?
1 關(guān)于內(nèi)存泄露, 我按照文檔改了
2 關(guān)于連接數(shù)過多, 是因為我用的是 JsonRpc/Clients/RpcClient 來做rpc, 是通過異步發(fā)送請求(如 asend_getInfoByUid()), 我看 RpcClient 的代碼是沒有主動closeConnection(), 必須顯式調(diào)用異步接收響應(yīng)(如 arecv_getEmail())才能觸發(fā) closeConnection(). 但這個異步接收響應(yīng)實際上是阻塞的, 我就是因為不想阻塞才使用異步請求的.
也就是說異步rpc中, 每次調(diào)用都會新建一個連接, 而不能復(fù)用連接