Ale*_*kii 5 proxy http node.js express
我在Node.js + Express 2中编写代理.代理应该:
加密相关部分工作正常.我面临的问题是超时.代理应该在不到15秒的时间内处理请求.实际上,他们中的大多数都在500毫秒以下.
当我增加并行请求数时出现问题.大多数请求都已完成,但有些请求在15秒+几毫秒后失败.ab -n5000 -c300
工作正常,但并发度为500时,某些超时请求失败.
我只能推测,但似乎问题是回调exectuion的顺序.首先出现的请求是否可能会挂起,直到ETIMEDOUT
节点将焦点放在仍在500ms内及时处理的最新节点中.
PS:远程服务器没有问题.我正在使用请求与它进行交互.
UPD
事物适用于某些代码的方式:
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);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是:在ab
发布时,比方说,20个POST /
,表达路由处理程序被调用数千次.这并不总是发生,有时20个,只有20个请求得到及时处理.
当然,ab
不是问题.我100%确定只发送了20个请求ab
.但是多次调用路由处理程序.
我找不到这种行为的原因,有什么建议吗?
超时是由于使用http.globalAgent
默认情况下最多可以处理5 个并发请求而导致的host:port
(在我的情况下这还不够)。
发送了数千个请求(而不是数十个)ab
(Wireshark 在 OS X 下批准了这一事实;我无法在 Parallels 内的 Ubuntu 下重现此情况)。
归档时间: |
|
查看次数: |
1500 次 |
最近记录: |