连接池 - 监控 Node.js 请求库中的并发请求?
Pooled connections - monitoring concurrent requests in Node.js Request library?
我正在向另一台服务器发送大量请求,并希望限制它们以免服务器过载。我的印象是,这可以通过 options
中的 pool
参数来完成,但我不确定我这样做是否正确。
我希望能够跟踪发送请求的时间,因为我正在尝试建立双工连接,并且需要确保相应的 GET 和 POST 请求是正确的同时发出。
这是我正在尝试的一个简化示例:
var request = require('request');
var options = {
'url': 'http://www.google.com',
'pool': {
'maxSockets': 3
}
};
for (var i = 0; i < 100; i++) {
request.get(options, (function(j) {
return function(err, res, body) {
console.log(j);
}
})(i));
}
请求真正发出去的时候有没有发出事件?我有什么方法可以跟踪每个请求的发送时间和发送顺序吗?
我在 Node.js documentation:
中找到了这个
Event: 'socket'#
function (socket) { }
Emitted after a socket is assigned to this request.
您可以使用它来监视连接,因为它们是这样分配的套接字:
http.get(options, function(res) {
// Do stuff
}).on("socket", function (socket) {
socket.on("connection") {
// record connection
};
});
请求库发出相同的事件,因为它只是内置 http 模块的包装器。
我正在向另一台服务器发送大量请求,并希望限制它们以免服务器过载。我的印象是,这可以通过 options
中的 pool
参数来完成,但我不确定我这样做是否正确。
我希望能够跟踪发送请求的时间,因为我正在尝试建立双工连接,并且需要确保相应的 GET 和 POST 请求是正确的同时发出。
这是我正在尝试的一个简化示例:
var request = require('request');
var options = {
'url': 'http://www.google.com',
'pool': {
'maxSockets': 3
}
};
for (var i = 0; i < 100; i++) {
request.get(options, (function(j) {
return function(err, res, body) {
console.log(j);
}
})(i));
}
请求真正发出去的时候有没有发出事件?我有什么方法可以跟踪每个请求的发送时间和发送顺序吗?
我在 Node.js documentation:
中找到了这个Event: 'socket'#
function (socket) { }
Emitted after a socket is assigned to this request.
您可以使用它来监视连接,因为它们是这样分配的套接字:
http.get(options, function(res) {
// Do stuff
}).on("socket", function (socket) {
socket.on("connection") {
// record connection
};
});
请求库发出相同的事件,因为它只是内置 http 模块的包装器。