如何解决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问题的资料请关注脚本之家其它相关文章!

相关文章

  • linux误删nginx.conf文件恢复方式

    linux误删nginx.conf文件恢复方式

    这篇文章主要介绍了linux误删nginx.conf文件恢复方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • linux 和 dockerfile 中配置环境变量的方式总结

    linux 和 dockerfile 中配置环境变量的方式总结

    要熟悉 dockerfile 配置 linux 的知识不能少,所以本文将给大家总结 linux 与 dockerfile 中各种环境变量,需要的朋友可以参考下
    2023-07-07
  • 使用LNMP一键安装包配置CentOS服务器环境教程

    使用LNMP一键安装包配置CentOS服务器环境教程

    当我们的服务器或vps安装好centos之后,接下来是配置服务器环境了,我们推荐LNMP一键安装包来配置生产环境。
    2011-03-03
  • Linux下PyTorch安装教程

    Linux下PyTorch安装教程

    这篇文章主要介绍了Linux下PyTorch安装教程,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-03-03
  • Linux:alias如何设置永久生效

    Linux:alias如何设置永久生效

    在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别名设置就不会在通过SSH重新登录时丢失
    2025-01-01
  • 详解Linux下随机生成密码的命令总结

    详解Linux下随机生成密码的命令总结

    本文详细介绍了如何使用Linux下命令来随机生成安全、符合密码复杂度的命令。 非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • Linux 6 下编译安装 PHP 5.6实例详解

    Linux 6 下编译安装 PHP 5.6实例详解

    这篇文章主要介绍了Linux 6 下编译安装 PHP 5.6实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • Linux设置文件和目录权限方式

    Linux设置文件和目录权限方式

    在Linux系统中,文件和目录的权限分为访问权限和归属权限,访问权限包括读(r)、写(w)、执行(x),可用字符或数字方式设置,归属权限涉及文件的所有者和用户组,特殊权限包括suid、sgid和Sticky位,分别用于提高程序的安全性和管理共享目录
    2024-11-11
  • 如何解决win10与Ubuntu16.04时间不同步的问题的方法

    如何解决win10与Ubuntu16.04时间不同步的问题的方法

    本篇文章主要介绍了如何解决win10与Ubuntu16.04时间不同步的问题的方法,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • 详解Ubuntu中apt和apt-get命令的区别

    详解Ubuntu中apt和apt-get命令的区别

    在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面,apt和apt-get是两个常用的命令行工具,用于安装、更新、删除和管理软件包,本文给大家介绍了Ubuntu中apt和apt-get命令的区别,需要的朋友可以参考下
    2024-06-06

最新评论