由于NodeJS事件循环的单线程特性,即使在HTTP请求被触发到下游应用程序之前,NodeJS也会自动超时,导致HTTP请求根本无法到达下游应用程序。即时间事件循环从事件队列中获取此任务已经发生超时(已经过了30ms)&对下游应用程序的请求永远不会被触发。
理想情况下,计时器应该在触发HTTP请求后启动,但在这种情况下,当任务仍在事件队列中等待事件循环拾取时,似乎计时器立即启动。
与此同时,我将超时从30ms增加到120ms,自我超时从每小时2.5K减少到每小时2-8。
let options = {
url: Url, //URL to hit
qs: params, //Query string data
method: "GET", //Specify the method
timeout: 30
};
request(options, (error, response, body) => {
if (error) {
return callback(new ErrorResponse(500, {error: error}));
} else {
return callback(null, response, body);
}
});
下面的环境详情
我对事件循环的理解事件队列如下图所示。
有人可以帮我弄清楚这里的确切问题。