问题陈述-
我们在互联网客户端和下游服务之间使用路由器.路由器(服务)是用Node.js编写的.其责任是将互联网客户端的请求传递给相应的下游服务,并将响应返回给互联网客户端.我们在路由器级别面临一些延迟.
用于http代理的库 -
https://github.com/nodejitsu/node-http-proxy
node-http-proxy 示例 -
用示例示例解释.我们在99%的案件中面临问题 -
我们使用100并发进行了负载/性能测试.
根据结果,直到95百分位,响应时间对于互联网客户来说是很好的.
但是,在99百分位数,下游服务在预期时间(~250ms)内响应.但是路由器的时间比预期多10倍(~2500毫秒).
服务信息 -
路由器和下游服务都在同一区域和同一子网中.所以,这种延迟不是因为网络.
延迟的可能性 -
分析这个 -
我们在配置下面蠢蠢欲动 -
keepAlive,maxSockets,maxFreeSockets,keepAliveMsecs,日志级别.PLease check http/https代理的节点配置 - http代理配置
节点服务的代码片段 -
var httpProxy = require('http-proxy');
var http = require('http');
var https = require('https');
var agent = new https.Agent({
maxSockets: nconf.get(25),
keepAlive: true,
maxFreeSockets: nconf.get(10),
keepAliveMsecs : nconf.get(5000)
});
var proxy = httpProxy.createServer({ agent: agent });
var domain = require('domain');
var requestTimeout = parseInt(nconf.get('REQUEST_TIMEOUT'));
process.env.UV_THREADPOOL_SIZE = nconf.get(4);
Run Code Online (Sandbox Code Playgroud)
问题 -