問題:想設計一個多客戶端的tcp程式,客戶端每隔1s(或更短)時間向服務器端發送心跳包(幾KB),服務器收到后發送回應給客戶端,現在設計一個程式開辟多個執行緒來模擬場景,要求客戶端10000~25000個,服務器端的CPU使用率不能太高。
現狀:目前跑5000個執行緒間隔1s發送,程式沒有問題,無丟包,服務器的cpu使用率在45%左右
問題:當跑10000個執行緒時,客戶端部分執行緒connect報錯:connection reset by peer,網上的解釋是訪問太頻繁服務器端關閉了某些socket,但是沒有提供好的解決方法
今天做了兩個實驗:
1.服務器端開兩個行程用兩個port來收發來自兩個節點的各5000個執行緒,兩個節點的客戶端都報出上述錯誤
2.將客戶端的收發請求間隔時間從1s延長到3s(等待每一輪收發完畢),再跑10000個執行緒,發現沒有問題,程式能穩定運行下去
請教各位大神如何實作我的目的,不甚感激~
uj5u.com熱心網友回復:
我是新手,但最近使用過Mina ,不知道這個對你是否有用!轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/104317.html
標籤:云存儲
