前段時間講述了在編寫乙個高效能的socket tcp服務要注意的細節[c#編寫高效能tcp socket應用注意事項];按那些細節描述的方法來實現乙個socket tcp效能到底達到乙個怎樣的效果呢?以下是針對相關方法實現的socket tcp服務進行乙個測試,看一下在那種方式編寫的socket tcp達到乙個怎樣的效能指標。
測試環境
server:core2 4300 1.8g 2g記憶體 win2003
client1:core i7 q740 1.7g 4g記憶體 win 764
client2:p4 2.4g 1g記憶體 win2003
由於i7 q740裝的是win7 系統所以沒有拿來做伺服器端。core2 4300 雖然是4-5年前的cpu,用來做服務端測試還是足夠的。
測試邏輯
傳送乙個簡單的物件
user user = new user();client1和client2各自啟兩個client程式,每個client開啟1000個連線,每個連線每秒大概傳送4個物件。user.name = "henryfan";
user.city = "guangzahou";
user.email = "[email protected]";
user.brithdate = new datetime(1900, 1, 1);
服務端接收資料後進行分包,讀取緩中資料還原物件,然後再把物件寫入緩衝區傳送回去。
測試結果
服務端接入4k個連線,每秒接收1.6w個物件和回發1.6w個物件。記憶體占用300多m(實際占用並沒有這麼多,程式開啟了1w個連線的緩衝區),cpu大概30%多的使用率。
服務端情況
client情況
服務端效能分析
以上分析乙個排程器的執行緒處理情況,從使用情況來看,物件寫入緩衝所損耗的可以乎略不計,sendasync占用了最多的資源。因此合理的使用sendasync和receiveasync是很有必要的。以上測試結果相信能讓編寫的這方面應用的朋友對c# socket效能有個初步的了解
beetletest.rar (930.62 kb)
C socket TCP網路程式設計
建立套接字 m slisten socket af inet,sock stream,ipproto tcp if m slisten invalid socket struct sockaddr in sin sin.sin family af inet 設定位址家族 sin.sin port h...
效能測試 效能測試步驟
針對此次庫內作業效能測試,梳理一下期間的工作流程 梳理已有的介面指令碼,確認需要做效能測試的幾個介面,即使用率高,對效能有要求的幾個主要介面。結合頁面的操作,和確認的介面,梳理具體的業務邏輯 同時,請開發人員部署了測試環境。測試環境的伺服器指標,盡量和生產環境一致。部署的時候,負載均衡等情況也盡量和...
C socket TCP打洞可行嗎?
a,b位於不同的nat後的兩台pc,s位於公網 首先a,b分別於s建立連線,當連線建立起來後s便知道了a與b各自的外網ip port 然後由s將他們的外網ip port發往對方,這樣a與b都知道了對方的外網ip port,此刻假如a想和b通話,則a再次繫結port 這個port與a連線s時的不一樣 ...