找回密码
 用户注册

QQ登录

只需一步,快速开始

楼主: freeeyes

ACE开源服务器研究(SVN和git版本持续更新中)

 火... [复制链接]
 楼主| 发表于 2010-8-13 11:40:01 | 显示全部楼层
这个问题很严重,我必须解决,如果在发生,请帮我记录一下堆栈输出,我想看一下。另外,你怎么模拟的5000个链接。可否将方法告诉我。我这里也可以帮助测试。寻找这个BUG。
发表于 2010-8-13 14:08:19 | 显示全部楼层
用你的MYIOCP进行测试,服务器在LINUX平台下编译运行的时候,当客户端关闭的时候,服务器出现段错误。
 楼主| 发表于 2010-8-13 15:26:10 | 显示全部楼层
你测试的平台是什么?可否用gdb跟踪一下。加我的QQ。
把堆栈给我看看。
另外,jackypeng的问题已经解决了。将在下个版本发布。
发表于 2010-8-13 17:40:57 | 显示全部楼层
windows上的压力测试发现同时在线保持长连接时,服务器最大的处理能力仅为3950~3970左右;这个时候服务器接收的客户端连接全部出现10055和10061错误,以前我没有用ACE写服务器时,长连接的在线率最高可以到10000左右,这个是不是ACE自身的限制
发表于 2010-8-14 13:38:57 | 显示全部楼层
回复 45# freeeyes


    多谢!
 楼主| 发表于 2010-8-19 18:37:33 | 显示全部楼层
jackypeng的问题:
你测试的链接数量,用myIOCP测试的吧,你可以把发送数据去掉,在看处理链接效能。而且尽量在两台机器测试这个服务器。因为如果每秒并行1000个线程发送数据,同时在处理连接进入请求,单机的话容易耗尽资源。
jamesyang680:
 楼主| 发表于 2010-8-19 18:37:53 | 显示全部楼层
jackypeng的问题:
你测试的链接数量,用myIOCP测试的吧,你可以把发送数据去掉,在看处理链接效能。而且尽量在两台机器测试这个服务器。因为如果每秒并行1000个线程发送数据,同时在处理连接进入请求,单机的话容易耗尽资源。
jamesyang680:
你的问题在你的帮助下已经解决。
发表于 2010-8-20 16:25:16 | 显示全部楼层
我用服务器A链接到另外一个服务器B,然后从服务器A发送到B的时候,发现B没法正确接收到数据。服务器B是在ConnectServer.conf设置的,细细查看了下,发现是封装的时候少了两个字节,不知道楼主有此问题否?此外,我发现CServerObject并没有封装ProServerConnect发送的相应接口,不知道楼主是否直接App_ProServerConnectManager::instance()来发送。此外我对中间服务器的理解不是很清楚,楼主有空帮忙解释下
发表于 2010-8-20 16:34:48 | 显示全部楼层
哦,刚刚修改了好了该问题,原因是这样的,在发送的头字节中,包的总长,CommandID,strLen,我都采用的是uint32型,而楼主ProServerConnect类中的SendMessage(IBuffPacket* pBuffPacket, uint32 u4MsgID)中采用的是uint16,代码给这句:
发表于 2010-8-20 16:35:35 | 显示全部楼层
忘记发那句代码了,如下
        //uint16 u2PacketLen = pBuffPacket->GetPacketLen(); 楼主的
        uint32 u4PacketLen = pBuffPacket->GetPacketLen(); 我改的
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-12-22 11:00 , Processed in 0.024536 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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