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命令查看到的那些东西,就是所谓的文件句柄。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |