- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 是获取完成端口状
您可能关注的文档
- 2020北师大版七年级数学下册:4_整式的乘法_课时2_学案.docx
- 2020北师大版七年级数学下册:5_同底数幂的除法_练习2.docx
- 2020北师大版七年级数学下册:5_平方差公式_课时2_学案.docx
- 2020北师大版七年级数学下册:6_整式的乘法_教案3.docx
- 2020北师大版七年级数学下册:7.1轴对称现象同步练习2.docx
- 2020北师大版七年级数学下册:7.3探索轴对称的性质同步练习1.docx
- 2020北师大版七年级数学下册:7_平方差公式_练习1.docx
- 2020北师大版七年级数学下册:8_完全平方公式_教案2.docx
- 2020北师大版七年级数学下册:8_完全平方公式_练习3.docx
- 2020北师大版七年级数学下册:台球桌面上的角_练习1.docx
文档评论(0)