我正在使用Node.js + Express 2编写代理。代理应该:
当我增加并行请求的数量时,问题就出现了。大多数请求都完成得很好,但某些请求在15秒后失败了几毫秒。使用并发500和
我只能推测,但问题似乎是回调执行顺序的问题。是否可能先到达的请求一直挂起,直到因为节点专注于最新的请求而在500ms内及时处理仍在进行中的请求导致
P.S.:远程服务器没有问题。我正在使用request与其交互。 更新 使用一些代码的方式:
我的问题是:当
当然,
我找不到这种行为的原因,有什么建议吗?
- 解密POST有效载荷,并根据结果向服务器发出HTTP请求;
- 加密来自服务器的回复并将其发送回客户端。
当我增加并行请求的数量时,问题就出现了。大多数请求都完成得很好,但某些请求在15秒后失败了几毫秒。使用并发500和
ab -n5000 -c300
可以正常工作,但有些请求由于超时而失败。我只能推测,但问题似乎是回调执行顺序的问题。是否可能先到达的请求一直挂起,直到因为节点专注于最新的请求而在500ms内及时处理仍在进行中的请求导致
ETIMEDOUT
?P.S.:远程服务器没有问题。我正在使用request与其交互。 更新 使用一些代码的方式:
function queryRemote(req, res) {
var options = {}; // built based on req object (URI, body, authorization, etc.)
request(options, function(err, httpResponse, body) {
return err ? send500(req, res)
: res.end(encrypt(body));
});
}
app.use(myBodyParser); // reads hex string in payload
// and calls next() on 'end' event
app.post('/', [checkHeaders, // check Content-Type and Authorization headers
authUser, // query DB and call next()
parseRequest], // decrypt payload, parse JSON, call next()
function(req, res) {
req.socket.setTimeout(TIMEOUT);
queryRemote(req, res);
});
我的问题是:当
ab
发送20个POST请求到/
时,Express路由处理程序会被调用数千次。这并不总是发生,有时只有20个请求会及时处理。当然,
ab
不是问题。我可以百分之百确定只有ab
发送了20个请求。但是路由处理程序被多次调用。我找不到这种行为的原因,有什么建议吗?