在前几天简单地测试了一下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作任何的调整.