连接池 - 监控 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 模块的包装器。