解决java报Too many open files错误
本文根据网上文章整理。在出现Too many open files问题后,首先得找出主要原因。最大的可能是打开的文件或是socket没有正常关闭。为了定位问题是否由Java进程引起,通过Java进程号查看当前进程占用文件描述符情况: lsof -p $java_pid 每个文件描述符的具体属性
lsof -p $java_pid | wc -l当前Java进程file descriptor table中FD的总量
lsof -p $java_pid 每个文件描述符的具体属性lsof -p $java_pid | wc -l当前Java进程file descriptor table中FD的总量
分析命令的结果,可判断问题是否由非正常释放资源所引起。 原因一、linux设置问题
查看系统允许打开的最大文件数
#cat /proc/sys/fs/file-max
查看每个用户允许打开的最大文件数
ulimit -a
使用ulimit -a命令可以查看ulimit设置,使用ulimit -n4096命令可以直接设置ulimit属性,但是如果需要设置永久生效,可以按照如下方式: vi /etc/security/limits.conf # 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4096
* hard nofile 4096
说明:
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
原因二、WebLogic设置问题
WebLogic的配置文件指定了部署在WebLogic上的应用允许同时打开的最大文件数量。
首先查看WebLogic本身的配置commEnv.sh(*** \common\bin),发现如下内容:
resetFd() {
if [ ! -n "`uname-s |grep -i cygwin || uname -s |grep -i windows_nt || \
uname -s|grep -i HP-UX`" ]
then
maxfiles=`ulimit -H-n`
if [ "$?" ="0" -a`expr ${maxfiles} : '*$'`-eq 0 ]; then
ulimit -n 1024
fi
fi
}
……
resetFd
在该配置文件中指定了该数量,其默认值为1024,将其修改,重新启动WebLogic。
页:
[1]