linux+weblogic Too many open files解決方案

逐個排查

1、linux服務器: ulimit   -a    檢查  open files 設置(建議65535:ulimit -n 65535)

2、weblogic服務器:

在***\wlserver_10.3\common\bin\目錄下找到commEnv.sh,修改其resetFd()函數的ulimit -n 後面的數值,根據操作系統不同系統適量調大,調整後的該函數應爲
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} : '[0-9][0-9]*$'` -eq 0 ]; then
        ulimit -n 65535
    fi
  fi

3、代碼:

通過一個隊列來控制併發量,如果當前活躍(指調用發起但未執行回調)的異步調用量小於限定值,從隊列中取出執行。

如果活躍調用達到限定值,調用暫時存放在隊列中。

每個異步調用結束時,從隊列中取出新的異步調用執行。

bagpipe的API主要暴露了一個push()方法和一個full事件,示例代碼如下:
var Bagpipe = require('bagpipe');  
// 設定最大併發數爲10  
  
var bagpipe = new Bagpipe(10);  
  
for (var i=0; i<100; i++) {  
    bagpipe.push(async, function () {  
          // 異步回調執行  
    });  
}  
bagpipe.on('full', function (length) {  
    console.warn('隊列擁堵,目前隊列長度爲:' + length);  
});  

4、如果還不行再檢查這裏/etc/security/limits.conf

加入:* - nofile 65535
退出登陸
再ssh進來就效了

5、如果還有其他檢查頂,請友人補充,謝謝。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章