linux或tomcat报too many open files 解决方法

问题描述

tomcat日志中报too many open files导致程序无法读取文件错误。

报错原因

出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值。

解决方法

  1. 查看每个用户最大允许打开文件数量
    ulimit -a
core file size          (blocks, -c) 0  
data seg size           (kbytes, -d) unlimited  
scheduling priority             (-e) 20  
file size               (blocks, -f) unlimited  
pending signals                 (-i) 16382  
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) unlimited  
virtual memory          (kbytes, -v) unlimited  
file locks                      (-x) unlimited  

其中 open files (-n) 1024 表示每个用户最大允许打开的文件数量是1024

  1. 查看当前系统打开的文件数量
lsof | wc -l  
watch "lsof | wc -l" 
  1. 查看某一进程的打开文件数量
lsof -p pid | wc -l  
lsof -p 1234 | wc -l 
  1. 设置open files数值方法
ulimit -n 102400
但这种设置方法在重启后会还原为默认值。
  1. 永久设置方法
vim /etc/security/limits.conf  
在最后加入  
* soft nofile 4096  
* hard nofile 4096  

最前的 * 表示所有用户,可根据需要设置某一用户,例如

fdipzone soft nofile 8192  
fdipzone hard nofile 8192 

改完后注销一下就能生效。

你可能感兴趣的:(linux或tomcat报too many open files 解决方法)