【发布时间】:2021-12-11 23:04:42
【问题描述】:
我遇到了一个节点问题,对于我添加到并行队列的每个网络请求,直到我得到网络响应的时间都会增加几毫秒,这正常吗?如果是,请告诉我为什么,他们不应该花同样的时间回复吗?
设置:
本地响应服务器始终提供相同的 300KB JSON 响应。
查询方式:
const Q = require('q')
let queue = []
for (var i = 100; i > 0; i--) {
queue.push(getDamageInfo())
}
Q.allSettled(queue)
.then((result) => {})
const Q = require('q')
const request = require('request')
function getDamageInfo() {
id = '79d568d6-b820-40b4-845a-02228dcde338'
url = 'http://localhost:3001/damage/'
let deferred = Q.defer()
let start = new Date()
request.get(url + id , {
'auth': {
'bearer': token
}
}, (err, res, body) => {
let end = new Date() - start
console.log('get-damage-info: ' + id + ' %dms', end)
if(res.statusCode != 200) {
deferred.reject({statusCode: res.statusCode, error: err })
} else {
deferred.resolve(JSON.parse(body))
}
})
return deferred.promise
}
控制台输出:
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 43ms
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 44ms
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 46ms
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 48ms
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 51ms
.
.
.
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 223ms
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 224ms
get-damage-info: 79d568d6-b820-40b4-845a-02228dcde338 225ms
我不明白为什么从请求 1 到请求 5 的 5 个并行请求的响应时间已经增加了近 10 毫秒。所有尝试过的库(https、axios、请求)都会发生这种情况。
提前感谢您,祝您有愉快的一天
【问题讨论】:
标签: node.js performance concurrency parallel-processing request