找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5316|回复: 6

Win Proactor和Linux ACE_Dev_Poll_Reactor,谁更快?

[复制链接]
发表于 2011-1-11 17:31:00 | 显示全部楼层 |阅读模式
测试了WIN平台下Proactor的速度,10000个连接大概17s处理完成。但是使用了ACE_Dev_Poll_Reactor,10000个连接要处理50s左右。按道理来说Epoll处理速度更快一些。

2个问题请教,1、如何判断是否启用了Epoll,在config文件里面做了配置#define。
                    2、Epoll的处理是否快过IOCP.
发表于 2011-1-14 12:52:30 | 显示全部楼层
楼主测试代码怎么写的,10000个连接怎么测的?
发表于 2011-1-14 19:32:35 | 显示全部楼层
这样比较并不科学。测试不能这样做。EPOLL和IOCP的性能都是不错的。
 楼主| 发表于 2011-1-17 15:43:07 | 显示全部楼层
以后测试有误。
重新测试了下,100Mbps带宽下,linux处理数据如下
          数据大小        1000(端口)        5000        10000        20000
Linux        64KB        12(MB/s)        10.4        11.2        11.3

但是windows下 超过2000个链接,就经常有链接丢失,或者Connect error。
不知道原因,测试的数据大小太大?linux没有这个问题哦!不解。
 楼主| 发表于 2011-1-18 10:18:51 | 显示全部楼层
经过测试发现 相同XP SP3的机器有一些只能建立 2000-3970个链接。
而有一些机器能建立5000以上的连接。

看了注册表,最大端口数都是 65534。 无解中,还在找原因。
发表于 2011-1-18 10:42:15 | 显示全部楼层
不要误解概念,能建立多少链接,与端口号无关。参阅UNIX网络编程卷1,里面有细说。
因为TCP/IP链接,是一对,四个信息,IP:PORT - IP:PORT,即便本地只用一个端口,也可以建立很多很多链接。建立的链接数,主要跟内存有关,还有操作系统的限制。这些话题你检索一下本站,早就讨论过了。
 楼主| 发表于 2011-1-18 16:04:19 | 显示全部楼层
本帖最后由 dean 于 2011-1-18 16:07 编辑

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

TcpNumConnections
Key: Tcpip\Parameters
取值类型:REG_DWORD - Number
取值范围:0 - 0xfffffe
缺省值:0xfffffe
描述:本参数限制可以同时打开的TCP连接的数量

MaxUserPort
key: Tcpip\Parameters
取值类型:REG_DWORD - Number
取值范围:5000-65534 (十进制)
缺省值:0x1388 (5000 十进制)
描述:控制一个应用程序可以打开的最多端口数量。通常,短命的端口在1024-5000之间分配。
当试图发起5000以上端口的连接,系统将出现WSAENOBUFS(10055)错误:因为队列满或者系统
缺乏足够的缓冲空间。

正在看Unix网络编程,低层知识太匮乏了。

有人说可以支持10W个连接,但是看参数好像最大才65535。请教。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-16 05:20 , Processed in 0.011261 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表