freeeyes 发表于 2010-8-13 11:40:01

这个问题很严重,我必须解决,如果在发生,请帮我记录一下堆栈输出,我想看一下。另外,你怎么模拟的5000个链接。可否将方法告诉我。我这里也可以帮助测试。寻找这个BUG。

jamesyang680 发表于 2010-8-13 14:08:19

用你的MYIOCP进行测试,服务器在LINUX平台下编译运行的时候,当客户端关闭的时候,服务器出现段错误。

freeeyes 发表于 2010-8-13 15:26:10

你测试的平台是什么?可否用gdb跟踪一下。加我的QQ。
把堆栈给我看看。
另外,jackypeng的问题已经解决了。将在下个版本发布。

jackypeng 发表于 2010-8-13 17:40:57

windows上的压力测试发现同时在线保持长连接时,服务器最大的处理能力仅为3950~3970左右;这个时候服务器接收的客户端连接全部出现10055和10061错误,以前我没有用ACE写服务器时,长连接的在线率最高可以到10000左右,这个是不是ACE自身的限制

z176230704 发表于 2010-8-14 13:38:57

回复 45# freeeyes


    多谢!

freeeyes 发表于 2010-8-19 18:37:33

jackypeng的问题:
你测试的链接数量,用myIOCP测试的吧,你可以把发送数据去掉,在看处理链接效能。而且尽量在两台机器测试这个服务器。因为如果每秒并行1000个线程发送数据,同时在处理连接进入请求,单机的话容易耗尽资源。
jamesyang680:

freeeyes 发表于 2010-8-19 18:37:53

jackypeng的问题:
你测试的链接数量,用myIOCP测试的吧,你可以把发送数据去掉,在看处理链接效能。而且尽量在两台机器测试这个服务器。因为如果每秒并行1000个线程发送数据,同时在处理连接进入请求,单机的话容易耗尽资源。
jamesyang680:
你的问题在你的帮助下已经解决。

KimilesWood 发表于 2010-8-20 16:25:16

我用服务器A链接到另外一个服务器B,然后从服务器A发送到B的时候,发现B没法正确接收到数据。服务器B是在ConnectServer.conf设置的,细细查看了下,发现是封装的时候少了两个字节,不知道楼主有此问题否?此外,我发现CServerObject并没有封装ProServerConnect发送的相应接口,不知道楼主是否直接App_ProServerConnectManager::instance()来发送。此外我对中间服务器的理解不是很清楚,楼主有空帮忙解释下

KimilesWood 发表于 2010-8-20 16:34:48

哦,刚刚修改了好了该问题,原因是这样的,在发送的头字节中,包的总长,CommandID,strLen,我都采用的是uint32型,而楼主ProServerConnect类中的SendMessage(IBuffPacket* pBuffPacket, uint32 u4MsgID)中采用的是uint16,代码给这句:

KimilesWood 发表于 2010-8-20 16:35:35

忘记发那句代码了,如下
        //uint16 u2PacketLen = pBuffPacket->GetPacketLen(); 楼主的
        uint32 u4PacketLen = pBuffPacket->GetPacketLen(); 我改的
页: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15
查看完整版本: ACE开源服务器研究(SVN和git版本持续更新中)