解决“too many open files”错误需分五步:一、临时用ulimit调整当前会话;二、通过/etc/security/limits.conf永久配置用户级限制;三、修改/proc/sys/fs/file-max调优内核级全局上限;四、为特定服务用户(如dmdba)精细化配置;五、验证生效并针对systemd服务补充limitnofile。

如果您在麒麟操作系统上运行高并发服务(如Web服务器、数据库或微服务),但频繁遇到“Too many open files”错误或连接拒绝现象,则很可能是系统默认的最大打开文件数限制过低。以下是修改最大打开文件数的多种方法:
一、临时修改当前会话的文件描述符限制
该方法仅对当前终端会话及其派生进程生效,不需重启,适合快速验证或调试。
1、查看当前软限制值:ulimit -Sn
2、查看当前硬限制值:ulimit -Hn
3、将软限制提升至65535:ulimit -Sn 65535
4、将硬限制同步提升至65535:ulimit -Hn 65535
二、永久修改所有用户全局限制
该方法通过配置PAM模块加载规则,使新登录会话自动继承设定值,适用于服务器长期运行场景。
1、编辑limits配置文件:sudo nano /etc/security/limits.conf
2、在文件末尾追加以下两行:* soft nofile 65535
3、继续追加:* hard nofile 65535
4、保存退出后,重新登录用户或新建SSH会话即可生效。
三、永久修改系统级内核参数
该方法调整内核可管理的总文件句柄上限,防止因全局资源耗尽导致服务异常,是高负载环境的必要补充。
1、编辑sysctl配置文件:sudo nano /etc/sysctl.conf
2、追加配置项:fs.file-max = 655350
本文档主要讲述的是Android 操作系统的介绍;Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
3、立即加载新参数:sudo sysctl -p
4、验证结果:cat /proc/sys/fs/file-max
四、针对特定服务用户的精细化配置
当仅需为某关键服务(如达梦数据库dmdba、Nginx运行用户)提升限制时,避免影响其他用户,应使用用户粒度配置。
1、确认目标用户名,例如:dmdba
2、编辑limits.conf文件:sudo nano /etc/security/limits.conf
3、添加专属行:dmdba soft nofile 65536
4、添加对应硬限制行:dmdba hard nofile 65536
5、确保该用户启动的服务进程能读取配置,建议以该用户身份执行ulimit -n验证。
五、验证与故障排查
修改完成后,必须验证是否实际生效,尤其注意systemd服务可能绕过limits.conf,需额外配置。
1、检查当前shell会话限制:ulimit -n
2、检查系统总容量:cat /proc/sys/fs/file-nr(输出三列:已分配、未使用、最大值)
3、若systemd托管服务(如nginx.service)仍报错,需编辑其service单元:sudo systemctl edit nginx.service
4、在覆盖配置中添加:[Service]\nLimitNOFILE=65535
5、重载并重启服务:sudo systemctl daemon-reload && sudo systemctl restart nginx










