博客
关于我
.net socket在win2008下的吞吐性能报告
阅读量:446 次
发布时间:2019-03-06

本文共 1990 字,大约阅读时间需要 6 分钟。

对于.net socket的性能问题,似乎MS也没有象WCF一样出个详细的报告,在很多人的使用情况来看性能方面并不理想。如果你比较关注这方面的东西,那这个测试的报告应该可以给你帮助对.net socket性能方面有个更多的了解。如果你担心.net socket的性能是否满足游戏服务端或应用网关的需要,以下测试结果相信也可以给到你一个明确的答案。

测试简述

为了更接近实际应用情况,测试流程 主要如下:数据接收->协议分析->数据反序列化成协议消息对象->消息对象分发->构建应答对象->序列化成协议数据 ->发送;而整个测试流程只缺少逻辑处理,不同应用逻辑处理存在差异,导致损耗也不一样所以并没有归纳到测试里去.测试用例分别有:1)高连接高并 发,2)低连接密集并发,3)状态广播等三种情况.

测试硬件如下:

  • 服务器采用E1230 V2版的至强CPU,8G内存和WIN2008R2的操作系统
  • 测试客户端则使用了三台配置低的台式机,2G内存和WIN2003操作系统

由于网络环境和测试客户端配置问题,并没进行极端的压力模拟

测试1

这个测试主要有三种情况,分别是10000连接,20000连接,30000连接;每个连接每秒向服务器发送一个请求,服务器接收请求后进行处理分发并进行应答

发请请求内容:

Register register = new Register();    register.UserName="henryfan";    register.EMail ="henryfan@msn.com";

应用答内容:

User user= new User();    user.Name = "henryfan";    user.EMail = "henryfan@msn.com";    user.City = "guangzhou";    user.Counrty = "china";    user.ID = 2324;    user.Age = 45;    user.BirthDay = 45454545;    user.Enabled = true;    user.FData = 4454.45f;    user.DData = 34343242.242;

三种情况的CPU,内存,网络等资源状况:

 

测试2

这个测试主要是针对连接相对比较少,但交互量比较大的应用如游戏.测试分别是1000,2000和3000连接三种情况,每个连接向服务端发出一个请求,服务端接收处理后进行应答,客户端得到应答后马上进入一下次请求.
发送请求内容:
Get get = new Get();
应答内容:
GetResponse response = new GetResponse();    response.User = new User();    response.User.Name = "henryfan";    response.User.EMail = "henryfan@msn.com";    response.User.City = "guangzhou";    response.User.Counrty = "china";    response.User.ID = 2324;    response.User.Age = 45;    response.User.BirthDay = 45454545;    response.User.Enabled = true;    response.User.FData = 4454.45f;    response.User.DData = 34343242.242;
三种情况的CPU,内存,网络等资源状况:

测试3

连接广播测试,这种在游戏场景中比较多,就是一个玩家状态变化后通知相邻的玩家,这种情况的数据交互非常大;以下测试是针对500连接的状态广播,连接每秒转发两次状态变更,服务器把变更信息转发给其他499个连接,其消息转发总量是每秒50W条.

转发信息如下:

Po postion = new Po();    Point point = client.GetPoint();    postion.Type = client.GetClientType();    postion.X = Convert.ToInt16(point.X);    postion.Y = Convert.ToInt16(point.Y);

CPU,内存,网络等资源状况:

以上测试并没有通过1比1的IO来达到50W的消息转发,从测试数据来看发送50W消息所使用发送IO大概是1W多来进行处理,因为同时多个消息发向一个连接,可以把消息进行合并处理来缓解IO所带的压力.

转载地址:http://uhtfz.baihongyu.com/

你可能感兴趣的文章
ORA-00600: internal error code, arguments: [kole_t2u], [34]
查看>>
应用人员反馈报错,ORA-03137: TTC protocol internal error : [12333]
查看>>
数据泵使用NETWORK_LINK不落地导入数据
查看>>
实验之-----------修改oracle实例名
查看>>
Oracle text组件安装
查看>>
在不影响程序使用的情况下添加shellcode
查看>>
刷LeetCode的简易姿势
查看>>
test!
查看>>
JavaScript 构造树形结构的一种高效算法
查看>>
通过Attached Property给控件绑定Command(二)
查看>>
Linq使用心得——SelectMany替代二重foreach循环
查看>>
UWP开发入门(二)——RelativePanel
查看>>
UWP开发入门(三)——{x:Bind}扩展标记
查看>>
微信小程序开发技巧总结 (一)-- 数据传递和存储
查看>>
dock基本使用
查看>>
ASP查询数据RS转换成COMMAND
查看>>
getDomain(url)-我的JavaScript函数库-mazey.js
查看>>
CSS:text-decoration参数说明
查看>>
ES6通过Set数组去重
查看>>
春风下也有落叶
查看>>