ESFramework 4.0 性能测试 -- 内核测试

   ESFramework底层使用最高效的IOCP(IO完成端口)模型,使得数据收发与处理达到最高性能。另外,ESFramework只会在需要时才使用必要的资源(如CPU、内存),并且会及时释放持有的资源,可以超长时间(比如数年)稳定运行,绝不会有内存泄露、死线程堆积等情况发生。由于ESFramework和StriveEngine使用的是同样的底层内核,所以本测试的结果对StriveEngine也是适用的。         

  本实验用于测试ESFramework/StriveEngine服务端引擎内核的性能和稳定性,测试程序使用最新发布的ESFramework 4.0版本。

一.准备工作

测试的机器总共有3台,都是普通的PC,一台作为服务器,两台作为客户端。(测试时间:2010年9月11日)

作为服务器是PC配置如下:

操作系统:Windows Server 2003 Enterprise Edition SP2

CPUPentium Dual-Core CPU E5400 @ 2.70GHz

内存:2G 

二.测试策略

       本实验所采用的策略是这样的:

(1)每个客户端实例首先与服务器建立NTCP连接,然后依次在每个TCP连接上发送一个36字节的消息。遍历一次完毕后,等待(SleepM毫秒,再进行下一轮遍历发送。

(2)服务端接收到消息后,解析消息,然后累加消息的个数。

(3)客户端统计已发消息的总数,并计算上一秒发送的请求数。

(4)服务端统计已接收消息的总数,并计算上一秒接收的请求数。 

三.测试过程    

1测试方案一:连接总数3000,每轮发送间隔100ms

1)在作为服务器的PC上启动服务端。

    

2)在作为客户端的两台PC上分别运行一个客户端实例。每个客户端实例设定连接数1500,每轮发送的间隔为100

                 

3)如此,服务端的总的连接数为3000,以下是运行一段时间后的截图: 

         

  在该测试过程中,服务端的每秒处理的消息数量在26000 ~30000之间波动,而CPU持续在80%以上。

      另外,在客户端的PC上通过NetLimitter可以看到每个连接上发出的数据流量:

   

2测试方案二:连接总数6000,每轮发送间隔300ms

       将方案一启动的各程序全部关掉,重头再来一次。

1)在作为服务器的PC上启动服务端。

     

2)在作为客户端的两台PC上分别运行一个客户端实例。每个客户端实例设定连接数3000,每轮发送的间隔为400

                

3)如此,服务端的总的连接数为6000,以下是运行一段时间后的截图: 

          

   在该测试过程中,服务端的每秒处理的消息数量在14000 ~18000之间波动,而CPU持续在65%以上。  

3测试方案三:我们最后测试一种极端的情况,那就是极少的连接数,极小的发送间隔。连接总数十多个,每轮发送间隔0ms。

1)在作为服务器的PC上启动服务端。  

(2)在作为客户端的一台PC上逐个启动客户端,每个客户端设定连接数为1,发送间隔为0ms,这样,当增加到12个时,服务端的CPU几乎始终维持在90%以上。

     运行一段时间后的截图如下所示: 

       在该测试过程中,服务端的每秒处理的消息数量在70000 ~ 80000之间波动,而CPU持续在90%以上。 【方案三测试 于2012.04.01所新增】     

四.测试结论

     第三种方案是比较极端的,在现实场景中很少碰到,但是作为一个极端的测试还是有必要的。一般服务器都要承载至少数千用户同时在线,所以我们主要讨论大连接数的测试方案。

     对于大连接数测试,除了前两种方案的测试以外,我们还进行了其它方案的测试,比如设置更小的连接数(至少1000)和更小的发送间隔(至少5ms),或设置更大的连接数和更大的发送间隔。测试反映,这台作为服务器的PC能承载的最佳并发连接数在4000左右,此时,服务器的吞吐量可以达到最大(每秒处理30000个左右的消息)。当连接数进一步增加时,吞吐量会降下来。最佳并发连接数和最大吞吐量的值与服务器机器的配置密切相关。 

五.测试程序

        本文末会提供测试程序的压缩包下载。在压缩包内附带了测试的服务端和客户端程序,有兴趣的朋友可以在自己的服务器上做更多的策略测试。在自己运行测试时,要注意以下几点:

(1)服务端最好运行在一台单独的机器上。如果客户端也运行在服务端所在的机器上,则会严重地影响服务端的吞吐量。

(2)合理地设置客户端的连接数和发送时间间隔。

(3)客户端运行的机器的操作系统对tcp连接数可能有最大值限制(有的是三千多),如果遇到这种系统,而单个客户端实例的连接数的设定又大于这个限制值,则会导致后续的tcp连接失败。若发生这种情况,请关闭客户端并重启,然后设定较小的连接数,再次测试。可以多开几个客户端实例,来增加连接数。

(4)如果服务器上有防火墙软件,可能会影响测试结果,最好关闭服务器上的防火墙进行测试。

(5)如果是在Internet上测试,请确保服务端带宽和客户端的带宽都足够大。

 

  ESFramework 4.0 性能测试程序下载。

-----------------------------------------------------------------------------------------------------------------------------------------------

 下载免费版本的ESFramework 以及 demo源码  

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

详细说明

SDK下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

详细说明

客户端下载

傲瑞实用组件

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品授权说明

产品选购指南

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com