最近在學習ASIO,基于他寫了個服務器框架,并進行壓力測驗:
服務器開一個網關服Gate,兩個入口服Entry,一個游戲服Game;開一個客戶端,總攻發起了4000個鏈接,測驗流程如下:
客戶端連接Gate,獲取Entry地址,斷開Gate,鏈接Entry,鏈接成功后,每200ms發送一次本地時間到服務器;
服務器Entry收到訊息,轉發給Game,Game將客戶端發過來的時間,原樣回傳給Entry,Entry再轉發給客戶端。客戶端收到訊息后,再次取本地時間,相減得到差值,用于統計
測驗環境:
CPU:i5-3210M CPU @2.5GHZ
記憶體:8G
測驗情況如圖:

其中日志資訊每秒輸出,內容為:
[當前連接數]: 最小時間 最大時間 處理的訊息數 平均時間 最新一次的時間
當4000鏈接時,服務器將每秒接收到2萬條訊息進行處理,而此時CPU主要消耗在 系統和壓縮記憶體上,通過查看:

主要消耗在這里。
另外我在Win7上也測驗過,主要CPU消耗在System行程上(NT Kernel & System),并且Win7上當System占滿一個CPU(四核i5, System占25%)時,整個系統就卡死不動了,此時總CPU消耗才30%。
而我原本是想通過多行程,單執行緒的方式來簡化開發,用集群來提高性能。但現在CPU才30%就卡死了。。。心好累
大神們有沒有知道是什么原因導致這個情況的,應該怎么優化,或者有什么思路,求助求助!!
uj5u.com熱心網友回復:
無profiler不要談效率!!尤其在這個云計算、虛擬機、模擬器、CUDA、多核 、多級cache、指令流水線、多種存盤介質、……滿天飛的時代!
uj5u.com熱心網友回復:
為什么你可以發起4000的連接呢? 我的測驗程式,一個客戶端只能發起70個連接,一個服務端只能接受1800+個連接。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/44300.html
標籤:其它技術問題
上一篇:窮舉問題
