测试客户端使用ConnectEx 投递连接请求,并发送小于128字节的数据包。
服务器环境:
外部租的服务器 Win2003 sp2, 4核, 4G内存, 带宽肯定够用
客户端环境:
一台办公电脑 Win XP SP3, 4核, 4G内存, 带宽也够用
在局域网,同样连接win2003的服务器进行测试,客户端每100MS发送 20个连接可以达到几千上万,且表现稳定。
将服端测试程序部属 在外网的win2003服务器上, 测试始终只能连接到800左右,服务端也就不再响应客户端的连接请求。 远程服务器时明显感觉服务器卡住了并且经常中断远程连接。关掉客户端测试程序,片刻远程服务器能恢复正常,此时再重新打开客户端测试程序进行连接,可以连接到800左右,但重复出现上面的现象。
开始怀疑 自己的IOCP测试程序有问题,从网上下载一个号称可撑到2W的IOCP测试程序,同样做1W连接的局域网测试。表现相当的好。 依然,我把服务端程序部署到外网的服务器上,连接同样只能达到800-900之间,后面出现的症状也一样。
后来开始怀疑会不会XP限制到TCP的连接数,于是分 别用两台办公电脑发起连接,测试结果和上面一样。
再后来找到网上有讲如何修改 win2003 半开连接数, XP如何修改TCP连接数,按网上的破解方法折腾半天,重启服务器,再进行测试,结果还是一样 800-900个连接就不再响应。
现在我怀疑是win2003 会不会有其它设置限制了SOCKET的连接数量。 求各位大神指点迷津。谢谢!
补充一下,服务器的防火墙和杀毒软件我都有关闭进行过测试,问题依旧。
10 个解决方案
#1
你搞笑呢吧,外网上下行带宽和内网是一回事么
#2
1楼你放心,就像上面我说的一样。我用别人的测试程序仅仅是一个连接请求,服务器本来是租来部署游戏后端的,双线,上下行带宽够用。另外在连接的时候我也注意看了服务器根本没吃带宽。
我才肯定的说够用。
问题不在这里。
我才肯定的说够用。
问题不在这里。
#3
连接后一直在发?你的出口带宽够么?不够的话,你服务器带宽再大,也无济于事
#4
另外 再怎么差的网络 800不应该
#5
我之前用过一个选择事件模型的都能到2000多。IOCP才到800...
#6
http://download.csdn.net/detail/guestcode/2566607
这个是我下载的测试用例地址
数据包是可以调整大小,我设置客户端的连接是2000个 每秒100个连接请求 到800服务端就卡住了。
这个是我下载的测试用例地址
数据包是可以调整大小,我设置客户端的连接是2000个 每秒100个连接请求 到800服务端就卡住了。
#7
路由器是家用版的?
#8
貌似我遇到和你同样的问题了
#9
内网正常,外层不行,肯定跟网络有关,不要去怀疑你的程序了。
1:考虑你的带宽和服务器的带宽
2: 如果使用NAT路由器,要考虑路由器的性能和NAT的资源,NAT是使用端口来转发的,一个公网IP路由器最多就能做65535条转发。如果你的客户端没有正常关闭连接又不停的重新连接,NAT的资源很快就会被用光。可以用两边都是公网IP来测试,不接任何设备,如交换机和路由器。
3: 检查你NAT路由器的设置。
1:考虑你的带宽和服务器的带宽
2: 如果使用NAT路由器,要考虑路由器的性能和NAT的资源,NAT是使用端口来转发的,一个公网IP路由器最多就能做65535条转发。如果你的客户端没有正常关闭连接又不停的重新连接,NAT的资源很快就会被用光。可以用两边都是公网IP来测试,不接任何设备,如交换机和路由器。
3: 检查你NAT路由器的设置。
#10
你可以把你的客户端测试程序放到服务器上去运行, 看看情况, 如果正常说明是网络中间的设备或带宽问题
#1
你搞笑呢吧,外网上下行带宽和内网是一回事么
#2
1楼你放心,就像上面我说的一样。我用别人的测试程序仅仅是一个连接请求,服务器本来是租来部署游戏后端的,双线,上下行带宽够用。另外在连接的时候我也注意看了服务器根本没吃带宽。
我才肯定的说够用。
问题不在这里。
我才肯定的说够用。
问题不在这里。
#3
连接后一直在发?你的出口带宽够么?不够的话,你服务器带宽再大,也无济于事
#4
另外 再怎么差的网络 800不应该
#5
我之前用过一个选择事件模型的都能到2000多。IOCP才到800...
#6
http://download.csdn.net/detail/guestcode/2566607
这个是我下载的测试用例地址
数据包是可以调整大小,我设置客户端的连接是2000个 每秒100个连接请求 到800服务端就卡住了。
这个是我下载的测试用例地址
数据包是可以调整大小,我设置客户端的连接是2000个 每秒100个连接请求 到800服务端就卡住了。
#7
路由器是家用版的?
#8
貌似我遇到和你同样的问题了
#9
内网正常,外层不行,肯定跟网络有关,不要去怀疑你的程序了。
1:考虑你的带宽和服务器的带宽
2: 如果使用NAT路由器,要考虑路由器的性能和NAT的资源,NAT是使用端口来转发的,一个公网IP路由器最多就能做65535条转发。如果你的客户端没有正常关闭连接又不停的重新连接,NAT的资源很快就会被用光。可以用两边都是公网IP来测试,不接任何设备,如交换机和路由器。
3: 检查你NAT路由器的设置。
1:考虑你的带宽和服务器的带宽
2: 如果使用NAT路由器,要考虑路由器的性能和NAT的资源,NAT是使用端口来转发的,一个公网IP路由器最多就能做65535条转发。如果你的客户端没有正常关闭连接又不停的重新连接,NAT的资源很快就会被用光。可以用两边都是公网IP来测试,不接任何设备,如交换机和路由器。
3: 检查你NAT路由器的设置。
#10
你可以把你的客户端测试程序放到服务器上去运行, 看看情况, 如果正常说明是网络中间的设备或带宽问题