长连接并发到一定量时发现连接大面积断开了?

要吃狼的鳄鱼 热爱金融的互联网从业者  2011-08-22 07:43:44
问题描述:

客户端发起对服务端的长连接,一旦连接上立即发送大量的数据包。
这样的长连接在并发量达到一定量(巨量,比如1万)的时候,
虽然每次发起连接都能成功,但是总会发现过一会儿有连接断开了
的现象,比如说发起1000个连接,到最后只存在着800个连接。通过测试,
发现这些连接根本不是程序自身关闭的。那么还有200个连接,
是怎么关闭的?
这是否与操作系统相关,服务器的配置相关。
...全文
167 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pathuang68 2011-08-22
[Quote=引用 4 楼 bokutake 的回复:]

你这简直就是DOS攻击啊。重负荷下以太网性能很低的,从你这个数据量来看,得565Mbps以上吧。你用的什么网络,一般以太网只能30%占用带宽下不出现明显丢包。而且4KB的包应该超过以太网的MTU,会发生IP分组吧,IP碎片重组是很消耗服务器资源的。
如果你的服务器又是Windows之类的网络抗负荷能力比较低的系统,负载平衡和服务器数量不够的话,肯定会出现连接断开。说明连接断开,肯定说明已经超出……
[/Quote]

++

楼主,你也特狠鸟。操作系统关闭一些连接是自我保护的表现。
回复
辰岡墨竹 2011-08-22
你这简直就是DOS攻击啊。重负荷下以太网性能很低的,从你这个数据量来看,得565Mbps以上吧。你用的什么网络,一般以太网只能30%占用带宽下不出现明显丢包。而且4KB的包应该超过以太网的MTU,会发生IP分组吧,IP碎片重组是很消耗服务器资源的。
如果你的服务器又是Windows之类的网络抗负荷能力比较低的系统,负载平衡和服务器数量不够的话,肯定会出现连接断开。说明连接断开,肯定说明已经超出网络和服务器的负荷了。
回复
后来我把长连接控制在500个
发现远程连接就稳定在一个数字497个。

于是我想,连接的并发量,确实与系统的性能,通信量,有关。
值得思考。
回复
服务端的连接限制上限为10000.
客户端发起9000个长连接。

这个发起长连接的过程是:
每1ms 发起 2 个连接,每个连接一旦连接成功后,有个定时器,每1秒
发送2个包,每个包4KB。

观察的结果是,

总共使用9000个端口,已经建立8788个远程连接。
过了五分钟,这些数字开始下降到
使用8000多个端口,建立5000多个远程连接
又过了会儿,又在下降。

回复
jixingzhong 2011-08-22
是否在服务器侧有最大连接数配置?
回复
相关推荐
发帖
其它技术问题
创建于2007-09-28

3849

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2011-08-22 07:43
社区公告
暂无公告