如何解决Linux下Too many open files问题

 更新时间:2021年06月01日 08:40:35   作者:Grey Zeng  
Too many open files是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数。 通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 31767

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 31767

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

可以看到,open files的配置是1024,可以通过如下命令将open files增加

ulimit -n 65535

这种修改方式可以临时把文件打开数量增加到65535,但是系统重启后这个配置会失效。

还有一种方式是修改系统的配置文件,以Ubuntu为例,配置文件默认在

/etc/security/limits.conf

在这个配置文件中增加

* soft nofile 65535* hard nofile 6553

如果要查看某个进程目前打开的句柄数量,可以通过如下命令:

lsof -p 进程ID|wc -l

此外,如果用supervisor托管和启动项目,会遇到这个配置无法生效的问题,原因在于supervisor会默认配置打开的句柄数量是1024,

如果要查看某个进程最大open files,可以通过这个进程的进程号对应的limits查看

cat /proc/进程ID/limits

其中有一行是:

Max open files10241024bytes

supervisor托管的程序这一行默认都是supervisor配置的最大数量1024,这时需要手动改一下supervisor的配置文件,修改方式如下,以Ubuntu系统为例,找到supervisor的配置文件supervisord.conf

在[supervisord]选项中,增加minfds选项的配置

[supervisord]minfds=65535 ; min. avail startup file descriptors; default 1024

配置完毕后,需要重启supervisor(以systemctl为例)

systemctl restart supervisor

即可生效

在通过:

cat /proc/进程号/limits

查看下对应进程的可open files的数量

Max open files6553565535bytes

以上就是如何解决Linux下Too many open files问题的详细内容,更多关于解决Linux下Too many open files问题的资料请关注脚本之家其它相关文章!

相关文章

  • Vmware虚拟机中CentOS安装 CentOS安装Qt的教程图解

    Vmware虚拟机中CentOS安装 CentOS安装Qt的教程图解

    这篇文章主要介绍了Vmware虚拟机中CentOS安装,CentOS安装Qt的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Linux中scp命令的使用

    Linux中scp命令的使用

    这篇文章主要介绍了Linux中scp命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Angular.JS中指令的命名规则详解

    Angular.JS中指令的命名规则详解

    这篇文章主要给大家介绍了关于Angular.JS中指令命名规则的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Vim进行文件目录操作小结

    Vim进行文件目录操作小结

    在工作的很多时候我们希望在Vim中可以操作文件和目录,例如备份当前文件、 重命名当前文件、创建和删除旧文件、创建和删除目录等。 这些操作在Bash中当然可以很好地完成,但退出Vim会丢失光标位置、Buffer等信息,我们当然希望在Vim中完成这些操作。下面来一起看看吧。
    2016-11-11
  • Linux系统文件的默认权限和特殊权限

    Linux系统文件的默认权限和特殊权限

    这篇文章主要介绍了Linux系统文件的默认权限和特殊权限的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Windows 10 太难用如何定制你的 Ubuntu方法详解

    Windows 10 太难用如何定制你的 Ubuntu方法详解

    这篇文章主要介绍了Windows 10 太难用,如何定制你的 Ubuntu,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 干货 | Linux新手入门好书推荐

    干货 | Linux新手入门好书推荐

    今天在知乎上看到了这样一个问答:学习操作系统的知识,看哪本书好?读完之后,我决定理一下操作系统方面的好书推荐给需要学习这个方向知识的人。下面这篇文章主要给Linux新手们推荐了一些入门的好书,需要的朋友可以参考下。
    2017-10-10
  • 关于linux分区,文件系统,目录结构的概述

    关于linux分区,文件系统,目录结构的概述

    下面小编就为大家带来一篇关于linux分区,文件系统,目录结构的概述。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误的解决方法

    在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误的解决方法

    这篇文章主要介绍了在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误的解决方法的相关资料,需要的朋友可以参考下
    2016-11-11
  • Linux系统下部署项目的设置方法

    Linux系统下部署项目的设置方法

    这篇文章主要介绍了Linux系统下部署项目的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10

最新评论