limits.conf 配置不生效问题排查
在部署数据库时,经常会遇到打开最大文件数限制 too many open files 的警告,通常我们只需要修改/etc/security/limits.conf该文件,增加两行,重新登录即可解决。
1、limits.conf 文件
1 2 3 4 | vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 |
注意:还有 /etc/security/limits.d/90-nproc.conf 文件,二者不要冲突。
2、重启不生效问题
当 /etc/security/limits.conf 修改后,通常退出重登录就可生效,但有时发现重启主机都不生效。如果重启主机都没有生效,就要从以下几个点进行排查了:
-
1、检查/etc/ssh/sshd_config 中
UsePAM yes
选项是否开启。解释1:UsePAM yes
选项开启后,表示启用pam模块,在/etc/pam.d/sshd中默认已存在一项session include password-auth
配置,include
表示需要通过password-auth
模块认证。 -
2、检查/etc/pam.d/system-auth 中是否存在
session required pam_limits.so
这一项。 解释2:在/etc/pam.d/system-auth里还应该存在session required pam_limits.so
这一项,表示使用/etc/security/limits.conf这个配置 -
3、检查/etc/pam.d/login 中是否将pam_limits.so文件被加入到启动文件中存在
session required /lib64/security/pam_limits.so
这一项。解释3:要让limits.conf文件配置能够生效,必须将pam_limits.so模块文件加入到启动文件中,故应在/etc/pam.d/login配置文件中添加session required /lib64/security/pam_limits.so
这一项
排查后重新登录一下用户就可以生效了,如果还未生效就要逐个排查/etc/pam.d下相关连的文件是否将session required pam_limits.so
这一下项注释或删除了
3、操作系统参数
另外影响最大打开文件句柄数量的还有/etc/sysctl.conf文件的配置:
fs.file-max = 102400 #内核可分配的最大文件数
fs.nr_open = 1048576 #单个进程可分配的最大文件数
fs.inotify.max_user_instances = 65535 #每个用户最大可创建inotify instances数量
fs.inotify.max_user_watches = 102400 #每个用户可同时添加的watch数量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!