DELPHI高性能大容量SOCKET并发.pdf

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DELPHI 高性能大容量 SOCKET 并发 (一):IOCP 完成端口例子介绍 例子主要包括 IOCP 控件封装、服务端实现、传输协议和日志、控制、 SQL 查询、上传、下载等协议实 现,并包括一些初步的性能测试结果。 服务端: 界面截图如下: 提供服务和桌面方式运行,桌面方式可直接打开程序,方便日常调试,可以使用命令行注册或卸载服务, 在 CMD 中输入 D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -install 来注册服务,在 CMD 输入 D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -uninstall 来卸载服务。 客户端: 界面截图如下: 主要实现了服务端日志查看,服务端协议类表查看, SQL 语句执行协议,上传、下载协议实现,其中对 上传、下载实现了一个多线程同时传,用于测试服务器并发性能。 性能: 支持超过 2000 个链接及以上同时上传文件,不过每个连接上传速度只有 1 到 2K 。支持超过 2W 个连接 同时在线传输命令。 单实例上传下载测试结果: 1 从测试结果可以看出随着发送包增大,速度变快。这里存在一个风险,就是 SOCKET 传输失败的次数也 会增加。 2 (二):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 传输速度要快,吞吐量更高。 要使用完成端口, 主要是以下三个函数的使用: CreateIoCompletionPort 、GetQueuedCompletionStatus 、 PostQueuedCompletionStatus 。 CreateIoCompletionPort 的功能是: 1、创建一个完成端口对象; 2 、将一个句柄和完成端口关联在一起; GetQueuedCompletionStatus 是获取完成端口状态,是阻塞式调用,在指定时间内如果没有事件通知,会一 直等待; PostQueuedCompletionStatus 用于向完成端口投递一个完成事件通知。 function CreateIoCompletionPort(FileHandle, ExistingCompletionPort: THandle; CompletionKey, NumberOfConcurrentThreads: DWORD): THandle; stdcal

文档评论(0)

缤纷生活 + 关注
官方认证
内容提供者

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

版权声明书
用户编号:8072000055000022
认证主体深圳市宸艺科技有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91440300MA5GCDT06T

1亿VIP精品文档

相关文档