逐个排查
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、如果还有其他检查顶,请友人补充,谢谢。