<返回更多

Linux下tomcat报too many open files错误解决方法

2019-10-28    
加入收藏

问题描述

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

报错原因

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

JAVA.IOException:打开的文件过多

经搜索,发现是由于linux默认设置的句柄数为1024,当并发量过大,就不够用了;

原因:

操作系统的中打开文件的最大句柄数受限所致,常常发生在很多个并发用户访问服务器的时候.因为为了执行每个用户的应用服务器都要加载很多文件(new一个socket就需要一个文件句柄),这就会导致打开文件的句柄的缺乏.

解决:

增加最大文件句柄数量:

nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)

cp /etc/security/limits.conf /etc/security/limits.conf_bak

echo "### add by css ### " >>/etc/security/limits.conf

echo "* soft nofile 65536" >>/etc/security/limits.conf

echo "* hard nofile 65536" >>/etc/security/limits.conf

echo "* soft nproc 65536" >>/etc/security/limits.conf

echo "* hard nproc 65536" >>/etc/security/limits.conf

重启系统,才能生效.

Linux下tomcat报too many open files错误解决方法

 

ulimit -a 查看所有设置

ulimit -u 65535(新的open files 值)修改设置

ulimit -n 65536 设置用户可以同时打开的最大文件数(max open files) 默认是2048

如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误 。

使用lsof -p pid [httpd进程的 pid、java的pid]来查看系统中Apache进程和java运行时进程当前打开的文件资源:

lsof -p `ps -ef|grep tomcat|grep -v "grep --color=auto tomcat"|awk '{print $2}'` | wc -l

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>