DIOCP开源项目-DIOCP3的LoadRunner11测试报告

简介: 昨天有个多年的群友(B3.Locet)用LoadRunner11对DIOCP3做压力测试,说测试的时候出现了大量的10053,10054的报告。昨天晚上下载了个LoadRunner11, 今天捣鼓了下。

昨天有个多年的群友(B3.Locet)用LoadRunner11对DIOCP3做压力测试,说测试的时候出现了大量的10053,10054的报告。昨天晚上下载了个LoadRunner11, 今天捣鼓了下。没用过这么高级的东西,

 

LoadRunner是专业的测试工具,用来测试DIOCP3 Echo测试服务器,是用socket协议进行测试

脚本写的很简单,每次发送101次数据,然后关闭连接。

image

在运行的时候模拟1000个用户运行,可以选择连续执行,或者只运行一次。经过测试发现,报告上面出现大量的10053,和10054的错误。

image

 

经过几次捣鼓,总结一下

 

1.DIOCP3的服务端对每个Socket连接发送请求(WSASend)做了排队处理,由一个队列来保存发送的请求,然后一个个进行排队投递,如果排队数量超过10个将会被T掉(这样可以防止客户端恶意不接受的行为),这样客户端会触发10054,或者10053的错误。

2.Loadrunner的发送的频率较高,但是接收比较慢,导致了服务端WSASend处理过慢,导致了服务端的发送缓存队列积满(推测,对Loadrunner了解太过肤浅), 应该可以改造下客户端脚本可以处理该问题。

3.为了让测试数据比较好看,对DIOCP3的测试服务端做了部分调整,把发送缓存队列上提到10240(也就是可以让队列存放1W多个缓存数据),如果每个socket都使得内存爆满,估计会服务端内存暴掉,然后把投递日志的开关关掉了。再次测试,允许许久, OK,基本无错误产生。

unit iocpTcpServer;

interface

{.$DEFINE LOGGER_ON}         //把编译注释掉,可以关闭服务端的日志投递
{.$DEFINE DEBUG_MSG_ON}  //把编译注释掉,可以关闭服务端的日志投递

 

constructor TIocpClientContext.Create;
begin
  inherited Create;
  FAlive := False;
  FRawSocket := TRawSocket.Create();
  FActive := false;
  FSendRequestLink := TIocpRequestSingleLink.Create(10);   ///这里可以调整发送队列的大小,默认为10
  FRecvRequest := TIocpRecvRequest.Create;
  FRecvRequest.FClientContext := self;
end;

 

总结:

    正常使用发送队列10个基本上可以满足,如果超过该数量,可能服务端根本不存在了,或者网络不通了,服务端关闭连接是正确的做法。

  

 

目录
相关文章
|
6月前
|
Cloud Native 测试技术 Linux
开源项目的测试和质量保证
开源项目的测试和质量保证
64 0
开源项目的测试和质量保证
|
前端开发 小程序 测试技术
靠谱:开源IM项目OpenIM压测程序介绍-自己动手测试性能和稳定性
靠谱:开源IM项目OpenIM压测程序介绍-自己动手测试性能和稳定性
572 0
|
缓存 开发框架 安全
webbench【开源项目】——压力测试软件
webbench【开源项目】——压力测试软件
245 0
|
弹性计算 编解码 资源调度
我与无影的初体验:使用无影云桌面进行一个开源 Angular 项目的端到端测试
近日很荣幸地收到了阿里云邀请做一个关于阿里旗下无影云桌面的评测,从官网上了解到阿里云无影云桌面原名为弹性云桌面,融合了无影产品技术后更名升级,可广泛应用于具有高数据安全管控、高性能计算等要求的安全办公、金融、设计、影视、教育等领域。
349 0
我与无影的初体验:使用无影云桌面进行一个开源 Angular 项目的端到端测试
|
JSON Java 测试技术
|
消息中间件 存储 NoSQL
# 再次推荐github 6.7k star开源IM项目OpenIM性能测试及消息可靠性测试报告
本报告主要分为两部分,性能测试和消息可靠性测试。前者主要关注吞吐,延时,同时在线用户等,即通常所说的性能指标。后者主要模拟真实环境(比如离线,在线,弱网)消息通道的可靠性。
448 0
# 再次推荐github 6.7k star开源IM项目OpenIM性能测试及消息可靠性测试报告
|
Web App开发 编解码 资源调度
我与无影的初体验:使用无影云桌面进行一个开源 Angular 项目的端到端测试
一个 Angular 程序员与无影云桌面第一次亲密接触的体验。
61505 2
我与无影的初体验:使用无影云桌面进行一个开源 Angular 项目的端到端测试
|
JavaScript 小程序 Java
小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
|
编解码 Android开发
开源项目:测试安卓设备摄像头的帧率
开源项目:测试安卓设备摄像头的帧率
212 0
|
安全 JavaScript Linux
开源项目推荐:国外整理的一套在线渗透测试资源合集
开源项目推荐:国外整理的一套在线渗透测试资源合集
474 0