Ulimit的坑,让我的故障一波又一波
本文转载自微信公众号「小姐姐味道」,作者小姐姐养的狗。转载本文请联系小姐姐味道公众号。
最近遇到一个非常有趣的问题。其中有一组HAProxy,频繁出现问题。登录上服务器,cpu、内存、网络、io一顿猛查。最终发现,机器上处于TIME_WAIT状态的连接,多达6万多个。
TIME_WAIT状态,一般都会出现在HAProxy、Nginx这种代理机器上,主要是由于频繁的主动关闭所造成的。通过修改reuse和回收参数,可以比较快速的解决问题。
网络状态的统计数量,可以使用下面的命令进行统计。
这本来没什么神奇的,但65535这个数字,实在是太过于敏感。应该是触发了某种上限。
使我们更加感到疑惑的是:为什么TIME_WAIT状态的连接,仅仅达到了65535,服务就不可用了?
到处号称的单机百万连接,是在吹牛皮么?怎么这么经不起折腾?
65535,表示等于2的16次方减一,是一个神奇的数字。先把这小数字扔在一边,我们来看一下Linux到底能支持多少个连接。
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命令查看到的那些东西,就是所谓的文件句柄。
先来看一下几个命令的展示。
ulmit,展示了每个进程所能占用的文件句柄数量。
file-max,展示了操作系统能够占用的文件句柄数量总和,针对的是所有的进程。
file-nr,展示了当前已经使用的句柄数量和总的句柄数量。可以拿来做监控。
要支持百万连接,既要放开操作系统级别的句柄,也要放开进程级别的句柄。也就是说,ulimit和file-max的显示,都要大于百万才成。
3. 如何设置?
设置进程的句柄个数,常用的方式就有ulimit,但是非常非常不推荐。原因无他,只有在同一个shell中启动的进程,ulimit的设置才会生效。你打开另外一个shell,或者重启机器,ulimit的改动都会丢失。就是下面这种方式:
正确的方式,是修改/etc/security/limits.conf文件。比如下面的内容。
可以看到,我们可以针对于特定的用户,修改其句柄数量。这在安装es等应用时,经常碰到。
但即使是这种方式,也要求你需要打开一个新的shell进行操作。在当前修改的shell里或者修改之前的shell里,同样不生效。xjjdog就曾遇到过多起这样明明放开了限制,但还是发生问题的案例。
要看到这些改变是否已经对进程生效,可以查看进程的内存映射文件。比如cat /proc/180323/limits,其中会有详细的展示。
这个数值,也并不是想要设多大就多大的。它的大小上限,是由nr_open决定的。想要更大,就要修改/ect/sysct.conf中fs.nr_open的值。
那file-max又该如何修改呢?建议修改/etc/sysctl.conf文件,加入下面内容。足足有6百多万!
当文件数量超出的时候,就会报kernel: VFS: file-max limit 65535 reached的错误。
总结一下。
Linux即使放开一个端口,能够接受的连接也是海量的。这些连接的上限,受到单进程文件句柄数量和操作系统文件句柄数量的限制,也就是ulimit和file-max。
为了能够将参数修改持久化,我们倾向于将改动写入到文件里。进程的文件句柄限制,可以放在/etc/security/limits.conf中,它的上限受到fs.nr_open的制约;操作系统的文件句柄限制,可以放到/etc/sysctl.conf文件中。最后,别忘了在/proc/$id/limits文件中,确认修改是否对进程生效了。
如此,百万连接才名不虚传。我比较奇怪的是,为什么Linux不默认放开这些配置呢?做成65535也认啊,为什么搞个1024?
作者简介:小姐姐味道(xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。
推荐系统
微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载
语言:中文版系统大小:5.13GB系统类型:Win11微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化 1、保留 Edge浏览器。 2、隐藏“操作中心”托盘图标。 3、保留常用组件(微软商店,计算器,图片查看器等)。 5、关闭天气资讯。
Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载
语言:中文版系统大小:4.75GB系统类型:Win11Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件
windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载
语言:中文版系统大小:5.31GB系统类型:Win11windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化
微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载
语言:中文版系统大小:5.31GB系统类型:Win11微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载
微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件
语言:中文版系统大小:0MB系统类型:Win11微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为
雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载
语言:中文版系统大小:4.75GB系统类型:雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统
雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO
语言:中文版系统大小:5.91GB系统类型:Win7雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户
番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载
语言:中文版系统大小:3.91GB系统类型:Win7欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统
相关文章
- 多云互联多重攻击黑客的攻击手段为何层出不穷
- 连接Wifi时出现感叹号的无线网络故障解决方法
- Gartner:威胁欺骗功能强大,但前提是行之有效
- "加入域,找不到网络路径"的解决办法
- 多家研究机构称2021年会全球将遭遇更多网络攻击
- U盘数据泄露,用不到30行的Python代码就能盗走
- 使用 OpenSSL 加密和解密文件
- 办公电脑常见故障处理技巧 学会这些就能少花冤枉钱
- 专栏
- PPTV网络电视怎么关闭自动推送消息功能?
- win10ipv6无网络访问权限怎么解决
- 如何设置网络以防止数据丢失
- 微软发布两个紧急安全更新:修复远程代码执行漏洞
- 看看黑客都在偷窥什么!入侵个人电脑揭密(图)
- 正在加载个人设置卡住了怎么办?
- oppowatch2可以用流量吗-可以用蜂窝网络数据吗
- PHP脚本木马的高级防范经验
- 伊朗核设施断电,疑为以色列进行破坏性网络攻击
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 4雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
常用系统
- 1电脑公司 Ghost Win7 x64 Sp1 装机万能版 2018年8月(64位)ISO镜像下载
- 2笔记本&台式机专用系统 GHOSTXPSP3 2019年12月 海驱版 ISO镜像高速下载
- 3新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年1月(64位) ISO镜像免费下载
- 4深度技术 Windows 10 x64 企业版 电脑城装机版2020年7月(64位) 高速下载
- 5雨林木风Ghost Win8.1 (X32) 快速纯净版2022年4月(免激活) ISO镜像快速下载
- 6番茄花园 Windows 10 极速企业版系统 2018年8月(64位)ISO镜像下载
- 7深度技术 Windows 10 x64 企业版 电脑城装机版2020年6月(64位) 高速下载
- 8番茄花园Ghost Win7 x64 SP1稳定装机版2020年10月(64位) 高速下载
- 9新萝卜家园电脑城专用系统 Windows10 x86 企业版2020年12月(32位) ISO镜像高速下载
- 10电脑公司 装机专用系统Windows10 x86中秋特别 企业版 版本1507 2021年9月(32位) ISO镜像快速下载