linux-tcp并发连接数分析

linux可通过五元组唯一确定一个链接:源IP,源端口,目的IP,目的端口,传输层协议。

一个端口不允许被两个及以上进程占用(一个进程可同时占用多个端口)

【作为客户端】

一、对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的连接到来返回给我们的错误是"Socket/File:Can't open so many files"。

这时,你需要明白操作系统可以打开最大文件数的限制。

默认为1024 可以执行命令 ulimit -n 1000000或修改配置文件ulimit -SHn 1000000 >> /etc/rc.local来更改

执行 cat /proc/sys/fs/file-nr 查看句柄数 

12720为当前使用   13144104为最大数

注意:在kernel2.6 版本中第二项的值总为0,这并不是一个错误,它实际上意味着已经分配的文件描述符无一浪费的都已经被使用。可以通过在/etc/sysctl.conf里定义fs.file-max = 1000000 来调整最后一个值的大小。

二、操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的,所以每一台机器作为客户端最多发出60000多个并发连接。

 

【作为服务端】

对于accept来说,accept的sock不占新的端口,而我们作为服务器实际只是使用了bind这一个端口。

 

server通常固定在某一个本地端口上监听,等待client的连接请求。不考虑地址重用的情况下,即使多个ip,本地监听端口也是独占的。因此server端tcp连接4元组中只有remote ip 和 remote port 是可变的,因此最大tcp连接数为客户端ip数 * 客户端port数。 对于ipv4,不考虑ip地址等因素,最大tcp连接约为2的32次方(ip数) * 2的16次方(port数)。

也就是server端:单机最大tcp连接数约为:2的48次方。  但是受制于系统的 io等限制,一般到达不了这么大。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值