ESFramework 4.0 性能测试
本实验用于测试ESFramework服务端引擎的性能,测试程序使用ESFramework 4.0版本。
一.准备工作
测试的机器总共有3台,都是普通的PC,一台作为服务器,两台作为客户端。
作为服务器是PC配置如下:
操作系统:Windows Server 2003 Enterprise Edition SP2
CPU:Pentium Dual-Core CPU E5400 @ 2.70GHz
内存:2G
二.测试策略
本实验所采用的策略是这样的:
(1)每个客户端实例首先与服务器建立N个TCP连接,然后依次在每个TCP连接上发送一个36字节的消息。遍历一次完毕后,等待(Sleep)M毫秒,再进行下一轮遍历发送。
(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%以上。
四.测试结论
除此两种方案的测试以外,我们还进行了其它方案的测试,比如设置更小的连接数和更小的发送间隔,或设置更大的连接数和更大的发送间隔。测试反映,这台作为服务器的PC能承载的最佳并发连接数在4000左右,此时,服务器的吞吐量可以达到最大(每秒处理30000个左右的消息)。当连接数进一步增加时,吞吐量会降下来。最佳并发连接数和最大吞吐量的值与服务器机器的配置密切相关。
五.测试程序
本文末会提供测试程序的压缩包下载。在压缩包内附带了测试的服务端和客户端程序,有兴趣的朋友可以在自己的服务器上做更多的策略测试。在自己运行测试时,要注意以下几点:
(1)服务端最好运行在一台单独的机器上。如果客户端也运行在服务端所在的机器上,则会严重地影响服务端的吞吐量。
(2)合理地设置客户端的连接数和发送时间间隔。
(3)客户端运行的机器的操作系统对tcp连接数可能有最大值限制(有的是三千多),如果遇到这种系统,而单个客户端实例的连接数的设定又大于这个限制值,则会导致后续的tcp连接失败。若发生这种情况,请关闭客户端并重启,然后设定较小的连接数,再次测试。可以多开几个客户端实例,来增加连接数。
(4)如果服务器上有防火墙软件,可能会影响测试结果,最好关闭服务器上的防火墙进行测试。
任何问题,请联系sky.zhuwei@163.com。
ESFramework 4.0 性能测试的更多相关文章
- 聊天系统Demo,增加文件传送功能(附源码)-- ESFramework 4.0 快速上手(14)
本文我们将介绍在ESFramework 4.0 快速上手(08) -- 入门Demo,一个简单的IM系统(附源码)的基础上,增加文件传送的功能.如果不了解如何使用ESFramework提供的文件传送功 ...
- 客户端登录验证 -- ESFramework 4.0 快速上手(15)
在之前版本的Rapid引擎中,是没有提供客户端登陆验证的机制的,如果要验证用户的帐号密码信息,我们只有自己手动通过自定义信息来实现.在2011.04.25发布的新版本中,客户端Rapid引擎,则内置了 ...
- 好友与组--ESFramework 4.0 进阶(11)
大部分分布式通信系统中,都会涉及到客户端之间相互通信.以及需要将客户端进行分组的功能,或者是类似这方面的需求.ESFramework对这一常见的任务内置了强大的支持,包括从客户端到服务端.一直到Pla ...
- 文件传送,如此简单--ESFramework 4.0 快速上手(13)
在所有的通信系统中,文件传送是最常见也是最重要的功能之一,ESFramework对文件传送的强大支持也是其亮点之一,使用ESFramework可以非常轻松地实现与文件传送相关的所有需求.ESPlus. ...
- 使用紧凑的序列化器,数倍提升性能 —— ESFramework 4.0 快速上手(11)
在分布式通信系统中,网络传递的是二进制流,而内存中是我们基于对象模型构建的各种各样的对象,当我们需要将一个对象通过网络传递给另一个节点时,首先需要将其序列化为字节流,然后通过网络发送给目标节点,目标节 ...
- 监控自定义信息 —— ESFramework 4.0 快速上手(10)
在ESFramework 4.0 进阶(02)-- 核心:消息处理的骨架流程一文中,我们介绍了通过挂接IMessageSpy到骨架流程,我们就可以监控到所有收发的消息.由于Rapid引擎已经为我们组装 ...
- 垂直分割群集模型与多通道引擎 -- ESFramework 4.0 进阶(10)
在ESFramework 4.0 进阶(09)-- ESPlatform 支持的三种群集模型一文中,我们介绍了ESPlatform支持的三种群集模型 -- 垂直分割模型.水平分割模型.交叉模型.我们看 ...
- 聊天系统Demo,增加Silverlight客户端(附源码)-- ESFramework 4.0 快速上手(09)
在ESFramework 4.0 快速上手 -- 入门Demo,一个简单的IM系统(附源码)一文中,我们介绍了使用ESFramework的Rapid引擎开发的winform聊天程序,本文我们将在之前d ...
- 消息同步调用-- ESFramework 4.0 进阶(07)
分布式系统的构建一般有两种模式,一是基于消息(如Tcp,http等),一是基于方法调用(如RPC.WebService.Remoting).深入想一想,它们其实是一回事.如果你了解过.NET的Prox ...
随机推荐
- git的入门使用操作
Git html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,addres ...
- vc++项目 : error PRJ0002 : 错误的结果 1 (从“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\rc.exe”返回)。
右击工程->属性->配置属性->清单工具->输入和输出->嵌入清单,把是改成否
- Weblogic概念与基础
WebLogic Server 1.BEA WebLogic Server 1.Domain:域是个逻辑概念,用来组织管理一系列的应用服务器实例,中心配置文件Config.xml. 2.Cluster ...
- eclipse中debug快捷方式
eclipse中如何跳转到指定行 :ctrl+L 然后输入行数 F5:跳入方法 F6:向下逐行调试 F7:跳出方法 F8:直接跳转到下一个断点 持续更新
- How I Mathematician Wonder What You Are!(poj 3130)
题意:求问多边形的核(能够看到所有点的点)是否存在. /* 对于这样的题目,我只能面向std编程了,然而还是不理解. 算法可参考:http://www.cnblogs.com/huangxf/p/40 ...
- Mammoth官方文档翻译
用于.NET的.docx转HTML的Mammoth Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML.Mammoth致力于通过文档中的语义信息生成简洁的H ...
- Number Sequence (HDU 1711)
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- event system
事件的概念 简单来说, 就是应用程序感兴趣的应用内部或者外部的活动结果. 在Qt中, 使用QEvent 抽象这些活动. 事件驱动模型 事件驱动模型现在在计算机很多领域都有使用. 例如 BSD sock ...
- ubuntu 安装Matlab 解决显示中文乱码
在ubuntu 14.04中安装Matlab 2015a打开后发现中文乱码,这主要是由于JAVA中文支持问题. 解决方法如下: 进入Maltab的安装路径: 进入JRE目录: cd Matlab目 ...
- S.O.L.I.D五大原则之单一职责SRP
转自 : 汤姆大叔的blog Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单 ...