iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >too many open files(打开的文件过多)解决方法
  • 236
分享到

too many open files(打开的文件过多)解决方法

linuxtomcat服务器运维java 2023-09-02 14:09:03 236人浏览 独家记忆
摘要

https://www.cnblogs.com/conanwang/p/5818441.html SU: failed to execute /bin/bash:系统中打开的文件过多 一、产生原因 too many open file

https://www.cnblogs.com/conanwang/p/5818441.html

SU: failed to execute /bin/bash:系统中打开的文件过多

一、产生原因

too many open files(打开的文件过多)是linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如Socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。
引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少:

[root@localhost ~]# ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 126906max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 1024  <==文件数pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 8192cpu time               (seconds, -t) unlimitedmax user processes              (-u) 126906virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited

open files那一行就代表系统目前允许单个进程打开的最大句柄数,这里是1024。
使用命令lsof -p 进程id可以查看单个进程所有打开的文件详情,使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件:

[Tomcat@localhost bin]$ jps3092 Bootstrap3197 Jps[tomcat@localhost bin]$ lsof -p 3092 | wc -l108

以裸启动的tomcat为例,可以看到它目前打开了108个文件数,如果文件数过多使用lsof -p 进程id命令无法完全查看的话,可以使用lsof -p 进程id > openfiles.log将执行结果内容输出到日志文件中查看。

二、解决方法

1、增大允许打开的文件数——命令方式

ulimit -HSn 102400 //这只是在当前终端有效,退出之后,open files又变为默认值。当然也可以写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile

ulimit -HSn 102400 临时终端生效,切换终端失败
[root@localhost 20221108]# ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 126906max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 1024pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 8192cpu time               (seconds, -t) unlimitedmax user processes              (-u) 126906virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited[root@localhost 20221108]# [root@localhost 20221108]# ulimit -HSn 102400  [root@localhost 20221108]# [root@localhost 20221108]# ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 126906max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 102400  pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 8192cpu time               (seconds, -t) unlimitedmax user processes              (-u) 126906virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited

2、增大允许打开的文件数——修改系统配置文件

2.1.修改file-max

/proc/sys/fs/file-max中指定了系统范围内所有进程可打开的文件句柄的数量限制

# echo  6553560 > /proc/sys/fs/file-max  //sysctl -w "fs.file-max=34166",前面2种重启机器后会恢复为默认值或# vim /etc/sysctl.conf, 加入以下内容,重启生效fs.file-max = 6553560

fs.file-max = 6815744
fs.file-max指系统能够打开最大的文件句柄数
建议设置:fs.file-max=512processes=6.51024*1024=6.5MOracle系统内核参数、资源限制及ipcs相关命令总结

2.2.修改ulimit的open file,系统默认的ulimit对文件打开数量的限制是1024
# vim /etc/security/limits.conf  //加入以下配置,重启即可生效#在最后加入  * soft nofile 65535 * hard nofile 65535或者只加入 * - nofile 8192最前的 * 表示所有用户,可根据需要设置某一用户,例如roy soft nofile 8192  roy hard nofile 8192

注意”nofile”项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用”-“字符设定, 则hard和soft设定会同时被设定。

3、检查程序问题

如果你对你的程序有一定的解的话,应该对程序打开文件数(链接数)上限有一定的估算,如果感觉数字异常,请使用第一步的lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析,

1)打开的这些文件是不是都是必要的?
2)定位到打开这些文件的代码
3)是否程序操作了文件写入,但是没有进行正常关闭
4)是否程序进行了通讯,但是没有正常关闭(也就是没有超时结束的机制)

如果程序中存在这些问题的话,无论系统句柄数设置的多么大,随着时间的推移,也一定会占用完。

附录:

附录1.
为了让一个程序的open files数目扩大,可以在启动脚本前面加上ulimit -HSn 102400命令。但当程序是一个daemon时,可能这种方法无效,因为没有终端。

附录2.
如果某项服务已经启动,再动态调整ulimit是无效的,特别是涉及到线上业务就更麻烦了。
这时,可以考虑通过修改/proc/’程序pid’/limits来实现动态修改!!!

来源地址:https://blog.csdn.net/A___LEi/article/details/127762111

--结束END--

本文标题: too many open files(打开的文件过多)解决方法

本文链接: https://www.lsjlt.com/news/390916.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • too many open files(打开的文件过多)解决方法
    https://www.cnblogs.com/conanwang/p/5818441.html SU: failed to execute /bin/bash:系统中打开的文件过多 一、产生原因 too many open file...
    99+
    2023-09-02
    linux tomcat 服务器 运维 java
  • MacOS系统启动React前端项目时报错Error: EMFILE: too many open files, open解决方法
    错误场景 最近在开发React的前端微应用,启动时模块构建报错Module build failed, Error: EMFILE: too many open files, 如下图所示:  Error: EMFILE: too many...
    99+
    2023-09-13
    macos 前端 react.js javascript EMFILE
  • Mysql错误:Too many connections的解决方法
    MySQL数据库 Too many connections 出现这种错误明显就是 mysql_connect 之后忘记 mysql_close; 当大量的connect之后,就会出现Too many con...
    99+
    2024-04-02
  • MySQL提示“too many connections“的解决方法
     最近使用mysql8.0.23的时候连接数据库时发现提示报错,出现mysql too many connection 的异常。经过查询发现是mysql的系统自带的连接数太小,连接的线程超过系统配置导致出现错误。  首先登录mysql终端,...
    99+
    2023-09-01
    mysql 数据库 java
  • linux打开文件数过多怎么解决
    当Linux打开的文件数过多时,可能会导致系统资源紧张,导致性能下降或系统崩溃。以下是一些解决方法:1. 增加文件打开数限制:修改 ...
    99+
    2023-10-18
    linux
  • 解决MySQL错误Too many connections的方法是什么
    今天就跟大家聊聊有关解决MySQL错误Too many connections的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL数...
    99+
    2024-04-02
  • word2003文件打不开的解决方法
    如果Word 2003文件无法打开,可能是由于以下原因造成的:1. 文件损坏:文件可能已损坏,导致无法打开。您可以尝试使用Word的...
    99+
    2023-09-15
    Word
  • Python打不开.py文件的解决方法
    小编给大家分享一下Python打不开.py文件的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python打不开.py文件的解决办法:首先进入需要打开的p...
    99+
    2023-06-08
  • Win7 chm文件用什么打开?chm文件打不开的解决方法
    Win7 chm文件用什么打开?Win7系统大大增强了系统的安全性,随之而来的各种莫名其妙的问题,比如很多软件的帮助文档、电子书都在使用的chm文件在win7下会出现打不开的问题,打开之后只有空白,然后显示“...
    99+
    2023-05-19
    Win7 chm文件
  • VSCode无法打开源文件及无法打开链接库文件的解决方法
    目录一、无法打开源文件二、无法打开文件“XXX.lib”一、无法打开源文件 依次点击“项目——配置属性—&md...
    99+
    2024-04-02
  • shopex php文件打开乱码的解决方法
    小编给大家分享一下shopex php文件打开乱码的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!shopex php文件打开乱码的解决办法:首先打开ph...
    99+
    2023-06-14
  • win10打开RAR文件闪退的解决方法
    这篇文章主要介绍win10打开RAR文件闪退的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!按win+r组合快捷键,打开运行窗口,输入“gpedit.msc”,回车确认。在打开的本地组策略编辑器窗口中,依次点...
    99+
    2023-06-28
  • VisualStudio2022无法打开源文件的解决方式
    目录Visual Studio 2022无法打开源文件今天遇到个很糟心的问题网上找了很多办法解决方案总结Visual Studio 2022无法打开源文件 今天遇到个很糟心的问题 安...
    99+
    2023-01-31
    Visual Studio 2022 VisualStudio无法打开源文件 VisualStudio源文件
  • php文件下载后无法打开的解决方法
    本篇内容介绍了“php文件下载后无法打开的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP下载图片后文件打开显示损坏问题用php...
    99+
    2023-06-20
  • Win7系统无法打开.exe文件解决方法
    Windows操作系统中.exe文件也是可执行文件,一般情况双击.exe文件即可打开,但有用户在使用win7系统中,遇到了无法打开.exe此类型的文件的问题,提示“无法找到C:\***.exe文件&rd &n...
    99+
    2023-06-14
    Win7 系统 无法打开 .exe文件 解决 文件 exe
  • 解决win7不能在同一窗口打开多个文件夹的方法
      最近很多同事的win7系统都出现了不能在同一个窗口打开文件夹,而且有的同事甚至连IE都无法打开了。后来查资料终于解决了,现在和大家分享下方法。   方法一:   1、打开“计算机”,找到菜单栏...
    99+
    2023-06-09
    win7 文件夹 窗口 方法
  • MMC提示不能打开文件SQLServerEnterpriseManager.MSC的解决方法
    MMC提示不能打开文件SQLServerEnterpriseManager.MSC的解决方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇...
    99+
    2024-04-02
  • tmp文件的打开方法
    这篇文章将为大家详细讲解有关tmp文件的打开方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。tmp文件可以用记事本打开,右键选择tmp文件打开方式为记事本,就可以在记事本中看到tmp文件内容了,大部分的...
    99+
    2023-06-06
  • dms文件的打开方法
    这篇文章主要介绍dms文件的打开方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!dms文件的打开方法:首先点击一下这个文件,进入改名状态;然后手动把后缀名改成doc;最后双击点击这个改名后的文件,就会使用mac版本...
    99+
    2023-06-08
  • html文档打不开的解决方法
    这篇文章主要介绍html文档打不开的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便,适合初学前端开发者使用。2、可扩展性:超...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作