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