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的四种解决办法

  1. 单个进程打开文件句柄数过多
  • ulimit -a :查看单进程可以打开最大文件句柄数,子进程默认继承父进程的限制
  • cat /proc//limits:查看进程可以打开的文件句柄数
  • 修改/etc/security/limits.conf文件中nofile,通过切换用户或者重新登陆使配置生效
  • prlimit --pid $pid --nofile=102400:102400: 动态修改进程的打开文件句柄数限制
  1. 操作系统打开的文件句柄数过多
  • 动态修改:
echo 100000000 > /proc/sys/fs/file-max

  • 1
  • 2
  • 永久修改:
 /etc/sysctl.conf
  • 1
    1. systemd对该进程进行了限制
      修改该进程的service文件
      下面添加“LimitNOFILE=655360”来实现,使用systemctl daemon-reload来使该配置生效。
    2. 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(打开的文件过多)的主要内容,如果未能解决你的问题,请参考以下文章

Too Many Open Files(打开的文件过多)

Too many open files的四种解决办法

linux 打开文件数too many open files解决方法

打开的文件过多 Too many open files问题分析及解决方案

kafka too many open files的解决方法

linux 打开文件数 too many open files 解决方法