DELPHI高性能大容量SOCKET并发(20200919213928).docx

DELPHI高性能大容量SOCKET并发(20200919213928).docx

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE # PAGE PAGE # DELPHI高性能大容量 SOCKET并发 (一) : IOCP完成端口例子介绍 SQL查询、上传、下载等协议实例子主要包括iocp SQL查询、上传、下载等协议实 服务端: 界面截图如下: 应TO" 提供服务和桌面方式运行,桌面方式可直接打开程序,方便日常调试,可以使用命令行注册或卸载服务, 在 CMD 中输入 D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -install 来注册服务,在 CMD 输入 D:\DEMO\IOCPDemo\Bi n\IOCPDemoSvr.exe -u nin stall 来卸载服务。 客户端: 界面截图如下: 主要实现了服务端日志查看,服务端协议类表查看, SQL语句执行协议,上传、下载协议实现,其中对 上传、下载实现了一个多线程同时传,用于测试服务器并发性能。 性能: 支持超过2000个链接及以上同时上传文件,不过每个连接上传速度只有 1到2K。支持超过2W个连接 同时在线传输命令。 单实例上传下载测试结果: * H c D v F 1 rwiMot 口卜,:KB 1 :?rq.o ]|* “Km T-i? IftS J 屮仍 i jcXP ( KB岳 Wtt (KSJ5 . 云主砥Sft 1 535.07 661.6 454 91 55J Jil.'sa i 719.&1 1041.91 7B7J39 7S2.6 a 4 2244J7 7?a.? 1429.4-1 込瞞 i 料经垃 naui 2H7J2 ?7.jU 16 S125.a^ 1253.6 25J.ZS 32 7M1.4§ 139WW I<5& B 277D53 7W.J7 in II &4 175M 加 帅i削n 26^44 孜關 MIR.弼 B9T8 理 1钏飾 7&*1 31 4U.RT 13 754 12923. 3 16757 0? 2B5593 W.67 512 30e6EL2 2059.42 1134KlS2 427.M Ld24 170^6.71 1604^71 4107.07 血Ml射 :,.:,卜 SLHttM L: U1吨“上■ Gff两应丈小■: KB:| 12Mb 11B? i KB?$) t v FJJ1 l????(KfV5 1 S网(?B/S 池(KB/5 云 1 635.-I7 5SL5 74 1815^ 2C 2 8*5.15 BS9 47 1MJ5 xl 4 UJflJg 1S3.J6 22 a JH2.H ⑹g 1皿就 23 16 瞬侶 12 5937.25 6J63-U i^a.aa 64 9ieO.B6 1M心4 24H.4S 111404] 巧1 H 756 翦 TKLZS 33421J 481.41 512 3D332.&7 Z&4M 旳 432. M WM 2M40.^ 111?95 49.N 从测试结果可以看出随着发送包增大,速度变快。这里存在一个风险,就是 SOCKET传输失败的次数也 会增加。 :IOCP完成端口控件封装 IOCP完成端口介绍: 完成端口模型是 Windows平台下SOCKET端口模型最为复杂的一种 I/O模型。如果一个应用程序需要同 时管理为数众多的套接字,而且希望随着系统内安装的 CPU数量的增多,应用程序的性能也可以线性提升, 采用完成端口模型,往往可以达到最佳的系统性能。 完成端口可以管理成千上万的连接, 长连接传文件可以支持 5000个以上,长连接命令交互可以支持 20000 个以上。这么大并发的连接,更需要考虑的是应用场景, 按照100M的网卡传输速度12.5MB/S,如果是5000 个传文件连接,则每个连接能分到的速度 2.56KB/S ;如果是20000个命令交互连接,则每个连接分到的吞吐 量是655B/S,这种速度的吞吐量对很多应用是不满足,这时就要考虑加大网卡的传输速度或实现水平扩展, 这个我们后续会介绍。 完成端口是由系统内核管理多个线程之间的切换,比外部实现线程池性能要高, CPU利用率上内核和用 户态可以达到1:1,很多应用线程池是无法达到的。因此同等连接数的情况下,完成端口要比 INDY的 TCPServer传输速度要快,吞吐量更高。 要使用完成端口,主要是以下三个函数的使用: CreateloCompletionPort 、GetQueuedCompletionStatus 、 PostQueuedCompletio nStatus 。 CreateIoCompletio nPort 的功能是:1、创建一个完成端口对象; 2、将一个句柄和完成端口关联在一起; GetQueuedCompleti on Status 是获取完成端口状

您可能关注的文档

文档评论(0)

guoxiachuanyue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档