一台机子可以支持多少个socket连接?

upgrade_007 2009-01-21 09:04:48
比如一台游戏服务器,同时可能会有上万人在游戏。如果建立了socket长连接的话,一台机子可以保存多少个socket连接呢?请高手解答下,谢谢!
...全文
3055 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
redhat7890 2009-01-25
  • 打赏
  • 举报
回复
我说的是局域网
redhat7890 2009-01-25
  • 打赏
  • 举报
回复
前端时间我使用socket通信,不停开socket,但不关闭,我当时一共开了7000多个Socket,最后实在连接不上了,到达了极限!
但是我在另外一台机器上只能开3000多个socket,同一个服务器程序,我估计和网卡有很大关系!
madmanahong 2009-01-23
  • 打赏
  • 举报
回复
p2p跟UDP或者TCP没关系!
Eleven 2009-01-22
  • 打赏
  • 举报
回复
帮 Up
csgdseed 2009-01-22
  • 打赏
  • 举报
回复
学习
yanjing_mail 2009-01-22
  • 打赏
  • 举报
回复
学习
Yao_2002 2009-01-22
  • 打赏
  • 举报
回复
学习中....
野男孩 2009-01-21
  • 打赏
  • 举报
回复
非分页池就那么大,大家都要用。跑个5000,6000的就知足吧。
yc_8301 2009-01-21
  • 打赏
  • 举报
回复
帮忙顶,顺便学习。。
madmanahong 2009-01-21
  • 打赏
  • 举报
回复
第一个需要考虑的因素:

在Windows系统中,一个线程最多可以支持64个Socket。

------------------------------------

使用IOCP。应该不受到限制。处理2000个连接也就4个线程。。。。


第二个要考虑的因素:带宽限制

---------------------------------

我觉得大家计算带宽的方式很奇怪。


楼上一个人说:
另外与你带宽也有关系,一个用户流量以10K左右计算 10K*1000 = 10MB == 100Mb


我觉得这纯属伪科学。伪科学。伪科学。伪科学。伪科学。伪科学。伪科学。伪科学。伪科学。伪科学。

首先一个用户的流量10K?每秒?除非流媒体,否则不可能达到这么大数字!

其次。用户是轮训的,也就是说,在socket发送的时候,底层已经是线性处理了。如果send失败,那么你必须要等一段时间继续send。但这个时间往往是100ms以下。就跟CPU处理工作一样。如果我这一秒处理不了,下一秒处理即可,最多也就是失去了及时性,或者说响应时间。


但是总的来说,(除了流媒体这种服务器)如果能把流量用完,真的是很不容易。












金龙-Super 2009-01-21
  • 打赏
  • 举报
回复
Mark 一下,同时向大家学习
asssasharp 2009-01-21
  • 打赏
  • 举报
回复
不知道他们是怎么做的。不过,跟带宽关系也很最大吧。系统占用了那么多的资源。socket连接都不够时间片轮转的时间。
danielzhu 2009-01-21
  • 打赏
  • 举报
回复
第一个需要考虑的因素:

在Windows系统中,一个线程最多可以支持64个Socket。

参考原文:
Under Windows, there exists a default limit of 64 sockets used by a single signaling thread, so each signaling thread is able to handle at most 32 calls (with H.245 tunneling enabled).

链接:http://www.gnugk.org/gnugk-manual-5.html#ss5.2


第二个要考虑的因素:带宽限制,参考前面的带宽计算方法。如果你要采用动态带宽控制,那么网上也有很多动态控制的算法,这个需要根据你自身的业务来设计。
madmanahong 2009-01-21
  • 打赏
  • 举报
回复
长连接20万吧。微软MSDN中说的最大数字!


作为服务器不需要占用端口,对于带宽来说也不是问题,因为流量几乎不会用完。


最重要的是内存,因为每个tcp连接至少要消耗内核内存(不分页内存)17K。


不过这个数字没意义。首先你得保证你的程序能支持。能支持1万人在线的程序员,已经很难找了。
lygfqy 2009-01-21
  • 打赏
  • 举报
回复
如果是系统方面基本没有什么限制
但是你每个长链接处理的时间和资源就需要看机器的配置了
否则大量用户轮过来的话,等待时间就长了
liuzxchina 2009-01-21
  • 打赏
  • 举报
回复
另外与你带宽也有关系,一个用户流量以10K左右计算 10K*1000 = 10MB == 100Mb
liuzxchina 2009-01-21
  • 打赏
  • 举报
回复
TCP的话,跑几千用户就不错了。
mayudong1 2009-01-21
  • 打赏
  • 举报
回复
每个连接应该要占用一个端口吧
那就是最大有端口数个连接了
百事烟 2009-01-21
  • 打赏
  • 举报
回复
不是高手,抄书如下:

套接字模式: 非阻塞当然多一些
套接字I/O模型 重叠I/O 和完成端口当然多一些
机器配置 配置高当然多一些
是否支持多CPU CPU多当然多一些

以上成立的大前提是代码写的要合理而有效
僵哥 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wenqinwuhai 的回复:]
p2p技术。
[/Quote]
什么叫P2P?是想说的UDP吧?楼主明确的是“连接”.
加载更多回复(4)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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