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 

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容