Linux报错too many open file

Linux执行指令报错:

too many open file

怎么处理

解决:终极解决方案


echo“”>>/etc/security/limits.conf echo“*softnproc65535″>>/etc/security/limits.conf echo“*hardnproc65535″>>/etc/security/limits.conf echo“*softnofile65535″>>/etc/security/limits.conf echo“*hardnofile65535″>>/etc/security/limits.conf echo“”>>/root/.bash_profile echo“ulimit-n65535″>>/root/.bash_profile echo“ulimit-u65535″>>/root/.bash_profile 

最后重启机器或者执行:

ulimit-u655345&&ulimit-n65535 

打开文件过多,执行的进程太多了,可以修改配置增加最大文件描述符限制。
编辑文件 /etc/security/limits.conf,找到或添加如下内容,65535貌似是可设置的最大值:
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

打开的文件太多,注意Linux系统下文件的概念与win不同(比如打开的监听端口)

可以修改限制:

ulimit -n 65535
  • 这篇博客: Linux下文件句柄中的 Too many open files 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如果Java打开文件的时候,没有关闭IO流,那么打开到一定数量,在Linux下就会抛出Too many open files的异常。

        public static class HoldIOTask implements Runnable {
            @Override
            public void run() {
                int count=0;
                try {
                    while(true) {
                        FileOutputStream fos = new FileOutputStream(new File("temp"));
                        fos.write(1);
                        fos.close();
                        FileInputStream fis = new FileInputStream(new File("temp"));
                        while(fis.read()!=-1);
    //                    fis.close();
                        count++;
                        Thread.sleep(5);
                    }
                } catch (Throwable e) {
                    System.out.println(count);
                    e.printStackTrace();
                }
            }
        }
    

    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    如果在Linux环境下执行指令遇到了"too many open file"报错,需要进行如下处理:

    1. 首先需要了解每个用户最大允许打开的文件数量,可以通过运行ulimit -a来查看当前设置,其中 open files (-n) 表示每个用户最大允许打开的文件数量。

    2. 如果超过了最大允许打开文件数量的限制,需要修改系统的open files数值限制,可以通过运行ulimit -n 新的限制数值来修改。注意,这种修改方法在重启后会还原为默认值,需要进行永久设置。永久设置方法是修改限制文件/etc/security/limits.conf,在文件末尾加入如下内容即可:

    * soft nofile 新的限制数值
    * hard nofile 新的限制数值
    
    1. 如果需要检查发生"too many open file"报错的进程的Max open files,可以运行cat /proc/{pid}/limits |grep 'Max open files'命令来查看。如果需要修改Max open files的数量限制,也可以通过调整/etc/security/limits.conf文件来实现。

    需要注意的是,在修改完毕配置文件之后需要重启系统才能生效。