linux下tomcat之too many open files

一、问题表象:

  程序日志报错:java.io.IOException: Too many open files at 

二、解决方案:

  1、查看系统允许打开的最大文件数:
    cat /proc/sys/fs/file-max
  2、查看每个用户允许打开的最大文件数:
    ulimit -a
  3、发现系统默认的是open files (-n) 1024,问题就出现在这里。
    在系统文件/etc/security/limits.conf中修改这个数量限制, 在文件中加入内容:
      * soft nofile 65536
      * hard nofile 65536
    另外方法:
      1、使用ps -ef |grep java (java代表你程序,查看你程序进程) 查看你的进程ID,记录ID号,假设进程ID为12
      2、使用lsof -p 12 | wc -l 查看当前进程id为12的 文件操作状况
        执行该命令出现文件使用情况为 1052
      3、使用命令ulimit -a 查看每个用户允许打开的最大文件数
        发现系统默认的是open files (-n) 1024,问题就出现在这里。
      4、然后执行ulimit -n 4096
        将open files (-n) 1024 设置成open files (-n) 4096

摘抄自:https://www.aliyun.com/jiaocheng/120721.html