关于socket最大连接数的问题,求思路。

ruolins 2014-03-14 04:39:02
socket通信链接数量有上限,我在想的是,假如有人恶意占用服务器链接资源不释放,这种情况下该怎么处理?就是通常服务端是怎么处理这种问题的?求思路。。。。。
...全文
384 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jy251 2014-03-27
  • 打赏
  • 举报
回复
引用 13 楼 jianzhang5555 的回复:
[quote=引用 12 楼 jy251 的回复:] [quote=引用 9 楼 sp1234 的回复:] [quote=引用 6 楼 jy251 的回复:] 我现在做的项目就是这样,与其花精力去维护长连接增加服务器压力,还不如花点相对小点的开销,来每次通讯都建立连接,反正又不是做游戏。
我想你一定没有测试过繁忙的业务下使用短链接的延迟、对服务器的压力会有多大。这相当于一个公司要进行繁忙的商业活动,每一次去银行办事时都把自己的账户重新进行一次开户,折腾这些东西然后才进行一次业务。长连接下服务器压力更低,而不是更高,比如说CPU使用率从60%降低到6%。[/quote] 嗯,你猜对了,我确实没有经历过特别繁忙,我写的通讯只是只支持过2000-3000人同时使用,这种小范围的使用,所以我就一直用的短连接,看了你说的,我的确要开始考虑长连接了··谢了[/quote] 2000-3000人同时使用????是不是游戏?那也不少了啊。[/quote] 呵呵,不是游戏,如果是游戏,我用短连接就是找死···就是一个业务系统,我几年的努力将这套系统从边缘系统变成了企业的核心业务系统,现在回想,还真有点不容易啊
ruolins 2014-03-26
  • 打赏
  • 举报
回复
引用 12 楼 jy251 的回复:
[quote=引用 9 楼 sp1234 的回复:] [quote=引用 6 楼 jy251 的回复:] 我现在做的项目就是这样,与其花精力去维护长连接增加服务器压力,还不如花点相对小点的开销,来每次通讯都建立连接,反正又不是做游戏。
我想你一定没有测试过繁忙的业务下使用短链接的延迟、对服务器的压力会有多大。这相当于一个公司要进行繁忙的商业活动,每一次去银行办事时都把自己的账户重新进行一次开户,折腾这些东西然后才进行一次业务。长连接下服务器压力更低,而不是更高,比如说CPU使用率从60%降低到6%。[/quote] 嗯,你猜对了,我确实没有经历过特别繁忙,我写的通讯只是只支持过2000-3000人同时使用,这种小范围的使用,所以我就一直用的短连接,看了你说的,我的确要开始考虑长连接了··谢了[/quote] 2000-3000人同时使用????是不是游戏?那也不少了啊。
jy251 2014-03-18
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
[quote=引用 6 楼 jy251 的回复:] 我现在做的项目就是这样,与其花精力去维护长连接增加服务器压力,还不如花点相对小点的开销,来每次通讯都建立连接,反正又不是做游戏。
我想你一定没有测试过繁忙的业务下使用短链接的延迟、对服务器的压力会有多大。这相当于一个公司要进行繁忙的商业活动,每一次去银行办事时都把自己的账户重新进行一次开户,折腾这些东西然后才进行一次业务。长连接下服务器压力更低,而不是更高,比如说CPU使用率从60%降低到6%。[/quote] 嗯,你猜对了,我确实没有经历过特别繁忙,我写的通讯只是只支持过2000-3000人同时使用,这种小范围的使用,所以我就一直用的短连接,看了你说的,我的确要开始考虑长连接了··谢了
jy251 2014-03-16
  • 打赏
  • 举报
回复
学习腾讯的方法就好了,有没有数据用UDP判断,不用TCP长连接方式,免得别人搞鬼
  • 打赏
  • 举报
回复
引用 3 楼 jy251 的回复:
学习腾讯的方法就好了,有没有数据用UDP判断,不用TCP长连接方式,免得别人搞鬼
不懂什么意思?!
  • 打赏
  • 举报
回复
什么叫恶意?有什么问题? 你会因为有100多个字节这么大“链接资源不释放”而纠结吗? 至于说有人说什么“占用一个线程”,那纯粹是胡乱编程。根本不可能去占用什么线程而不释放。
showjim 2014-03-16
  • 打赏
  • 举报
回复
建立连接的代价是很大的,你可以测试一下你的服务器每秒能建立多少连接。 所以在高并发的情况下应该尽量使用长连接,不过长连接要占用掉一些内存。
  • 打赏
  • 举报
回复
引用 6 楼 jy251 的回复:
我现在做的项目就是这样,与其花精力去维护长连接增加服务器压力,还不如花点相对小点的开销,来每次通讯都建立连接,反正又不是做游戏。
我想你一定没有测试过繁忙的业务下使用短链接的延迟、对服务器的压力会有多大。这相当于一个公司要进行繁忙的商业活动,每一次去银行办事时都把自己的账户重新进行一次开户,折腾这些东西然后才进行一次业务。长连接下服务器压力更低,而不是更高,比如说CPU使用率从60%降低到6%。
  • 打赏
  • 举报
回复
加入有5000人连接,你整一堆(至少5001个)线程在那里“死循环、信号量阻塞”着,那是你的服务器的悲哀。 游戏服务器有人数限制,是因为带宽、CPU运算能力的限制,而不是因为要这么整一堆线程。
  • 打赏
  • 举报
回复
长连接也不需要占用任何一个线程。 保存一个客户端连接,不过是一个(例如说)TcpClient对象或者是(例如说)Socket对象保存在集合里,当消息到来时就会触发BeginReceive所注册的回调方法。当没有消息到来,根本不用什么线程。
jy251 2014-03-16
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
[quote=引用 3 楼 jy251 的回复:] 学习腾讯的方法就好了,有没有数据用UDP判断,不用TCP长连接方式,免得别人搞鬼
不懂什么意思?![/quote] 因为LZ的想法是用占用线程不释放的方式建立长连接,并维护他,他担心的是别人恶意的开多个线程来占用他服务器的资源。 既然这样的话,那不如用短连接,或者是UDP的方式,接收到了就接收到了没收到就没收到。如果想做网游的那种服务端,你没发现所有的网游服务端都是有人数限制的么??那中情况大多数就是硬件设备的限制。 我现在做的项目就是这样,与其花精力去维护长连接增加服务器压力,还不如花点相对小点的开销,来每次通讯都建立连接,反正又不是做游戏。
saybookcat 2014-03-14
  • 打赏
  • 举报
回复
恶意 ? 你的服务器连接都是你的客户端,你可以设置客户端只开启一次 或者你用UDP 再或者你用心跳包,检测到断开,就清理掉对于的Session的资源。 随便弄啊
showjim 2014-03-14
  • 打赏
  • 举报
回复
被动的基本没有上限,当也要注意处理超时。 主动的自己处理啊。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧