【发布时间】:2015-06-03 00:09:52
【问题描述】:
我正在使用 nodejs 异步模块进行并发连接,现在我的后端服务器一次只能处理 1000 个连接,我正在使用 async.mapLimit 来限制连接,async.mapLimit 的每个作业都会执行多个连接,当我正在从多个浏览器同时发送执行 async.mapLimit 的相同请求,然后我从服务器端收到 EMFILE 错误
([Error: connect EMFILE] code: 'EMFILE', errno: 'EMFILE', syscall: 'connect'),
我的代码有点像这样:
async.mapLimit(jobList, 200, jobCallback, function(error, data) {
});
function jobCallback(job, callback) {
/* Make multiple connections to to backend server, this number is
dynamic, here also I use async.mapLimit */
}
现在我想在这个 mapLimit 或任何东西的顶部实现一些包装函数,不管并行请求的数量如何,我想限制并发连接,即使也不管客户端调用的数量,它可能会更慢,但我愿意不打扰。
我怎样才能做到这一点?
我正在使用 restler 库。我试过设置
proto.globalAgent.maxSockets = 1000
一次做 1000 个并发连接,但它似乎不起作用。 请指教。
-M-
【问题讨论】:
标签: node.js asynchronous concurrency