在前幾天簡單地測試了一下Mono 3.2.3 TCP處理的穩定性,有同學問Mono 3.2.3的TCP處理性有怎樣,以下是針對Mono 3.2.3TCP在吞吐方面的性能測試.主要測試分兩種場分別是連接交互密集度高和低的兩種情況的處理性能指標.
測試環境描述
服務端:
cpu:e4300 1.7g (5,6年前比較老的PC)
內存:2g
操作系統:centos 6.4 32位
mono版本:3.2.3
測試client:
cpu:e31230v2(4核8線程)
內存:8G
操作系統:win2008r2
測試用例1
測試采用請求應答模式,Client在請求后等服務器應答后馬上進行下一次處理,處理數據大概在1K左右.測試的連接數分別是1000,2000,5000.具體測試結果如下:
- 1000
- 2000
- 5000
測試用例2
測試采用間隔一段時間發送請求,每個連接每秒發送一個請求,測試的連接數分別是2000,5000,10000.具體測試結果如下:
- 2000
- 5000
- 10000
總結
總的來說在Mono里影響性能的是數據交互量即Socket的讀寫數量,連接數量的多或少倒起不到有多大的影響.從測試結果上來看針對以上硬件處理1K數據的IO峰值最大估計在每秒2W讀+2W寫左右,這個性能可以滿足很多場景的需要包括一些游服務端的應用.不過總體性能和windows下比起來還是有點差距,這個差距也有可能是代碼實現上導致.畢竟測試服務端的代碼並沒有針對mono作任何的調整.