徐冬丽 发表于 2019-1-27 15:25:29

解决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]
查看完整版本: 解决java报Too many open files错误