博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net socket吞吐能力测试结果
阅读量:7221 次
发布时间:2019-06-29

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

    MS给.NET的socket异步提供了IOCP的支持,对于IOCP这个模型来说相信做过网络应用的朋友都清楚他的性能。但经过.NET的包装后他的性能又是怎样呢?以下是.NET Socket的吞吐能力测试结果。测试服务端的配置为Core E4300 1.8g 2g内存win2003sp2,配置似乎有点旧,但这样更容易体现.NET Socket的性能.

单一对象应答

客户端发起一个请求,服务器应答后客户端再进行下一次请求.

请求对象

public class Get : IMessage    {        public string ID;    }

应答对象 

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;

不同连接情况下的测试结果

列表对象应答

客户端发起一个请求,服务器应答后客户端再进行下一次请求. 

请求对象

class Request : IMessage    {    }

应答对象 

Response response = new Response();                for (int i = 0; i < 5; i++)                {                    Order order = new Order();                    order.OrderID = 10248;                    order.CustomerID = "WILMK";                    order.EmployeeID = 5;                    order.OrderDate = 629720352000000000;                    order.RequiredDate = 629744544000000000;                    order.ShipAddress = "59 rue de l'Abbaye";                    order.ShipCity = "Reims";                    order.ShipCountry = "France";                    order.ShipName = "Vins et alcools Chevalier";                    order.ShipPostalCode = "51100";                    order.ShipRegion = "RJ";                    response.Orders.Add(order);                }

测试结果

带宽受限,因此只能测试1000连接

高连接并发

客户端每隔一秒请求发出一个请求

请求对象

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;

不同连接测试结果

    从以上得到的数据来看,.NET提供的Socket吞吐能力还是很不错的,比较保守的计算在5年前的普通家用PC满负载的情况最低也可以处理5W的send+5w的receive的IO操作。为什么说是保守呢,因为以上测试所包括的并不仅仅是Socket吞吐,还有协议的分析对象的序列化等等工作。从后面的测试情况看,连接数并不是影响性能的主要因素,可以说存在的影响非常少,所以在设计的时候并没有必要注意在连接数上;在一些交流过程很多人第一时间关心这个在此提醒一下。看完这个结果相信对.NET Socket吞吐能力不了解的朋友应该大体上的了解,需要做这方面应用的朋友好好地利用它的,它的性能真的不错.

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

你可能感兴趣的文章
C# ini文件读写类
查看>>
受限的文本框——限制可输入字符个数的文本框
查看>>
使用 Clozure CL 在 Cocoa 窗口组件中实现显示中文字符串的简单方法
查看>>
UML关系(泛化,实现,依赖,关联(聚合,组合))
查看>>
Servlet生命周期
查看>>
多重赋值
查看>>
运行topology出现错误
查看>>
错误状态的实例恢复方法
查看>>
seci-log 1.10 发布 增加了全文搜索密码加密等多个功能点
查看>>
ios游戏开发 Sprite Kit教程:初学者 1
查看>>
lae界面开发工具入门之介绍十一--<安卓系统如何编译打包?>
查看>>
Java对象创建
查看>>
android 开发中向文件指定位置写入数据
查看>>
关于maven使用的一些心得
查看>>
nodejs 开发工具 sublime
查看>>
hadoop集群部署注意问题
查看>>
firefox 选中变删除
查看>>
javascript闭包的个人理解
查看>>
使用HBuilder基于HTML5编写新闻客户端APP的一些实验
查看>>
Description Resource Path Location Type The projec
查看>>