【问题标题】:Unexpected latency in response time at Node server节点服务器的响应时间出现意外延迟
【发布时间】:2017-11-14 20:33:13
【问题描述】:

问题陈述-

我们在互联网客户端和下游服务之间使用路由器。路由器(服务)是用 Node.js 编写的。它的职责是将互联网客户端的请求传递给相应的下游服务,并将响应返回给互联网客户端。我们在路由器级别面临一些延迟。

用于 http-proxy-的库-

https://github.com/nodejitsu/node-http-proxy

node-http-proxy 示例-

用示例进行解释。我们在 99% 的情况下面临问题 -

我们使用 100 个并发进行了负载/性能测试。

根据结果,直到 95%,互联网客户端的响应时间看起来都很棒。

但是,在 99% 的情况下,下游服务会在预期时间(约 250 毫秒)内响应。但是路由器花费的时间是预期的 10 倍(~2500 毫秒)。

服务信息-

路由器和下游服务都在同一区域和同一子网中。所以,这个延迟不是因为网络。

这种延迟的可能性-

  1. 某些线程在节点服务级别被阻塞。这就是为什么无法监听下游服务响应的原因。
  2. 在 dns 查找中花费更多时间。
  3. 节点级线程数较少,因此无法监听来自下游服务端的所有传入响应。

分析这个-

我们调整了以下配置 -

keepAlive、maxSockets、maxFreeSockets、keepAliveMsecs、日志级别。请检查 http/https 代理的节点配置 - http agent configuration

节点服务的代码sn-p -

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);

问题-

  1. 我是节点服务的新手。如果您帮助我使用正确的值调整上述配置,那就太好了。如果我错过了任何配置,请告诉我?
  2. 有什么方法可以拦截路由器机器上的网络流量,这将有助于我分析上面提到的路由器响应时间延迟的 10 倍?
  3. 如果您知道任何分析工具(网络级别),可以帮助我深入了解,请与我分享?

[更新 1]

找到一个有趣的链接 - war-story

如果我在这里遗漏了任何必需的信息,请让我在此处添加。

【问题讨论】:

  • 能不能把你的路由器换成nginx再检查一下
  • 你能不能也增加你的ulimit,打开文件
  • @Ankur 这个问题和 ulimit 有什么关系?
  • @hereandnow78 目前,我正在为路由器服务和下游服务的请求 API 的标头中添加“当前时间”。然后,将看到 2 个级别的差异:当从路由器请求下游服务时,以及当下游服务响应路由器服务时。然后,它将帮助我们更深入地潜水。
  • 尝试删除默认设置为无穷大的agent.maxSockets和默认设置为256的agent.maxFreeSockets

标签: node.js web-services https node-http-proxy


【解决方案1】:

我怀疑 http-proxy 模块是问题所在。如果它同步处理请求,这可能会导致 javascript 在继续处理队列中的下一个请求之前等待后端响应。我建议更改为 https://www.npmjs.com/package/http-proxy-async 看看这是否能解决问题。

【讨论】:

猜你喜欢
  • 2012-02-08
  • 2018-05-19
  • 2017-05-18
  • 1970-01-01
  • 2011-09-26
  • 2013-01-02
  • 1970-01-01
  • 2019-11-14
  • 2018-08-09
相关资源
最近更新 更多