Too Many Open Files(打开的文件过多)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Too Many Open Files(打开的文件过多)相关的知识,希望对你有一定的参考价值。
参考技术A 1、检查系统对单个进程文件句柄的限制用ulimit -n命令查询:
> ulimit -n 65535
2、每个进程均会有对应的Max open files设置,用到的命令:
cat /proc/pid/limits |grep 'Max open files'
检查结果:
> cat /proc/4837/limits |grep 'Max open files'
Max open files 4096 4096 files
3、进程使用了多少文件句柄
用到的命令:
> lsof -p pid | wc -l
1
检查结果:
> lsof -p 4837 | wc -l
至此,发现了问题:ulimit查询到最大open files数量是65535, /proc/4837/limits查询到Max open files数量是4096,lsof查询到的打开文件数量4169。显然进程4837打开文件数量超过了/proc/4837/limits中的限制。
csdn.net/sayyy/article/details/100156385
Too many open files的四种解决办法
- 单个进程打开文件句柄数过多
- ulimit -a :查看单进程可以打开最大文件句柄数,子进程默认继承父进程的限制
- cat /proc//limits:查看进程可以打开的文件句柄数
- 修改/etc/security/limits.conf文件中nofile,通过切换用户或者重新登陆使配置生效
- prlimit --pid $pid --nofile=102400:102400: 动态修改进程的打开文件句柄数限制
- 操作系统打开的文件句柄数过多
- 动态修改:
echo 100000000 > /proc/sys/fs/file-max
- 1
- 2
- 永久修改:
/etc/sysctl.conf
- 1
- systemd对该进程进行了限制
修改该进程的service文件
下面添加“LimitNOFILE=655360”来实现,使用systemctl daemon-reload来使该配置生效。 - inotify达到上限
notify是linux提供的一种监控机制,可以监控文件系统的变化。该机制受到2个内核参数的影响:“fs.inotify.max_user_instances”和“fs.inotify.max_user_watches”,其中“fs.inotify.max_user_instances”表示每个用户最多可以创建的inotify instances数量上限,“fs.inotify.max_user_watches”表示么个用户同时可以添加的watch数目
当其他三种都无效,尝试这种办法。修改/etc/sysctl.conf,执行sysctl -p
以上是关于Too Many Open Files(打开的文件过多)的主要内容,如果未能解决你的问题,请参考以下文章
linux 打开文件数too many open files解决方法
打开的文件过多 Too many open files问题分析及解决方案