注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Socket编程中的连接限制  

2015-12-01 20:25:22|  分类: 网络服务编程技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Socket编程中的连接限制

在网络编程中大家都知道三元组(ip地址,协议,端口),更详细的大家可以去看Tcp/ip三卷大部头。那么就会出现一个老生常谈的问题——到底在一台PC上运行一个服务程序,可以有多少个连接?习惯上,大家会按照理论上有多少个端口来说有216次方减1,有65535个连接。

其实,这个是不准确的,或者说是错误的。大家都知道,在Linux服务器上,通过修改内核可以支持几万甚至于更多的并发,但一般为了安全起见,一台服务器是不支持太多的并发的。那么一台服务器上跑的程序到底能够同时有多少个并发呢?

按照陈硕所说:“基于对以上两个问题的分析,说明单独谈论“TCP 并发连接数”是没有意义的,因为连接数基本上是要多少有多少。更有意义的性能指标或许是:“每秒钟收发多少条消息”、“每秒钟收发多少字节的数据”、“支持多少个活动的并发客户”等等。”

参见:http://blog.csdn.net/solstice/article/details/6579232

而一般来说,服务器实际上到底能够连接多少个连接,是与具体到某个服务器的内存和CPU及其相关硬件是有很大关系的,当然,操作系统也是一个重要的环节。

同样,陈硕也给出了答案:

“在只考虑 IPv4 的情况下,并发数的理论上限是 2**48。考虑某些 IP 段被保留了,这个上界可适当缩小,但数量级不变。实际的限制是操作系统全局文件描述符的数量,以及内存大小。

一个 TCP 连接有两个 end points,每个 end point {ip, port},题目说其中一个 end point 已经固定,那么留下一个 end point 的自由度,即 2 ** 48。客户端 IP 的上限是 2**32 个,每个客户端IP发起连接的上限是 2**16,乘到一起得理论上限。

即便客户端使用 NAT,也不影响这个理论上限。(为什么?)”

在博客: http://www.cnblogs.com/tianzhiliang/archive/2011/06/13/2079564.html中,也提出了这种连接的数量问题,解释的虽然不尽了然,但基本也是那么个意思。

综合上述,所以说讲这个连接限制的问题,要有提前的环境限制,比如说硬件,操作系统等等。不能单一的去讲这个问题。当然,一概而化之的用65535来说明这个问题,个人觉得也没有什么致命的错误。至少,可以更清楚的把问题简单化。但是一定要清楚,这样说是不准确的,或者干脆说是有错误的。

  评论这张
 
阅读(203)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017