Weblogic(Too many open files問題的解決過程)


最近公司的川師項目連續2天在頻繁報警,而且時間點都是晚上11點過幾分的樣子.而且是就是too many file open日志如下:

(Too many open files ) 
    at java. io. FileInputStream. open ( Native  Method ) 
    at java. io. FileInputStream. <init > ( FileInputStream. java : 112 ) 
    at weblogic. utils. classloaders. FileSource. getInputStream (FileSource. java : 31 ) 
    at weblogic. servlet. internal. WarSource. getInputStream (WarSource. java : 65 ) 
    at weblogic. servlet. FileServlet. sendFile (FileServlet. java : 400 ) 
    Truncated.  see log file  for complete stacktrace

從日志本身可以發現“Too many open files”,說明同時打開的文件數過多,
於是估計Linux/AIX操作系統中會有參數設置允許同時打開的最大文件數量,具體查看方法可以參考:

http://hi.baidu.com/bluesnake/blog/item/d267e350019a85591138c2f2.html

第一天過后修改了linux系統的參數,並編寫了一個監控腳本監控連接數目,第二天還是不對.而經過查看,在本項目正式環境中已經將允許同時打開的最大文件數量設置為了一個很大的數目,所以應該不是服務器的原因,轉而查看WebLogic的配置,猜測是由WebLogic的配置文件指定了部署在WebLogic上的應用允許同時打開的最大文件數量。

首先查看startWebLogic.sh和setDomainEnv.sh,都沒有發現類似設置,接下來查看WebLogic本身的配置commEnv.sh(***\wlserver_10.3\common\bin),發現如下內容:

# limit the number of open file descriptors
resetFd ( )  {
   if  [  !  -"`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} : '[0-9][0-9]*$'-eq 0 ]; then
        ulimit -n 1024
    fi
  fi
}

可以發現weblogic真的限制了,最大的文件打開數目.
在***\wlserver_10.3\common\bin\目錄下找到commEnv.sh,修改其resetFd()函數的ulimit -n 后面的數值,根據操作系統不同系統適量調大,調整后為 2048在當前服務器負載下並未出現異常.

改大了連接數目 等咯兩天有出問題了 內存溢出 解決辦法

修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd文件:

修改 

MEM_ARGS="-Xms2048m -Xmx2048m"
export MEM_ARGS

將內存設置到一個合適的值.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM