加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

Ulimit的坑 使我的故障一波又一波

发布时间:2022-09-02 11:59:31 所属栏目:安全 来源:互联网
导读:最近遇到一个非常有趣的问题。其中有一组HAProxy,频繁出现问题。登录上服务器,cpu、内存、网络、io一顿猛查。最终发现,机器上处于TIME_WAIT状态的连接,多达6万多个。 1. Linux能够支持多少连接? 答案是无数个。可是端口只有65535个
  最近遇到一个非常有趣的问题。其中有一组HAProxy,频繁出现问题。登录上服务器,cpu、内存、网络、io一顿猛查。最终发现,机器上处于TIME_WAIT状态的连接,多达6万多个。
  
  1. Linux能够支持多少连接?
 
  答案是无数个。可是端口只有65535个啊。
 
  为什么端口只有65535个?
 
  这是一个历史原因,因为在TCP、UDP协议的开头,会分别有16位来存储源端口号和目标端口号。很遗憾的是,这个值是short类型的,大小也是2^16-1。
 
  因为历史原因造成的不可改变的标准,就是那么根深蒂固。
 
  那Linux到底能支持多少个连接呢?答案是无数个。
 
  拿nginx来说,我们把它监听在80端口上。这时候A机器去连接Nginx,可以发起多达6w多条长连接。如果B机器去连接Nginx,同样也可以发起6w多条连接。这是由于确定一条连接,是由src和dst来共同决定的。
 
  认为Linux只能接受65535条连接的想法,只能说是犯了非常浅显的想当然主义。
 
  65535个端口,作为压测机可能对你来说太小了一些。但对于服务器来说,已经绰绰有余了。
 
  2. 如何支持百万连接?
 
  从上面可以看到,连接数,是没有限制的。但Linux还有一层防护,那就是文件句柄数。通过lsof命令查看到的那些东西,就是所谓的文件句柄。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读