配置Linux文件句柄数
查看句柄数
Linux操作系统中文件句柄数的限制默认是1024(一个进程最多可以接受1024个socket连接),在生产环境系统中这是远远不够的,所以很多应用都需要解除文件句柄数的限制。
通过调用ulimit命令可以看到一个进程能够打开的最大文件句柄数量:
ulimit -n
ulimit命令是用来显示和修改当前用户进程的基础限制命令,-n选项用于引用或设置当前的文件句柄数量的限制值。
调整句柄数
对于高并发、高负载的应用,必须调整这个系统参数,以适应并发处理大量连接的应用场景。可以通过ulimit来设置这两个参数,方法如下:
ulimit -n 65536
普通用户通过ulimit命令可将软性极限值更改到硬性极限值的最大设置值。如果要更改硬性极限值,必须拥有root用户权限。
ulimit -SHn 65536
选项-S表示软性极限值,-H表示硬性极限值。硬性极限值是实际的限制
软性极限值则是系统发出警告(Warning)的极限值,超过这个极限值,内核会发出警告。
通过命令只能修改当前用户环境的一些基础限制,仅在当前用户环境有效。一旦断开用户会话,或者说用户退出Linux,它的数值就又变回系统默认的1024了。并且,系统重启后,句柄数量会恢复为默认值。
配置句柄数
编辑Linux的极限配置文件/etc/security/limits.conf来做到。修改此文件,加入如下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
soft :软性极限
hard:表示硬性极限
nofile : 一个进程最多能打开的的文件数
nproc : 一个用户最多能创建的进程数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· 为什么 .NET8线程池 容易引发线程饥饿
· 场景题:假设有40亿QQ号,但只有1G内存,如何实现去重?
· 在 .NET 中使用 Tesseract 识别图片文字
· Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?
· C#/.NET/.NET Core技术前沿周刊 | 第 20 期(2025年1.1-1.5)
2017-09-24 常用jar命令