【问题标题】:REST API measuring server-side response times (performance).REST API 测量服务器端响应时间(性能)。
【发布时间】:2013-07-14 17:26:09
【问题描述】:

我开发了一些基于nodejs的rest API,我想测试API的性能。有什么工具可以轻松统计每次 API 调用的时间吗?

或者如何测量 REST API 响应请求所需的时间。

【问题讨论】:

  • 您在寻找代码覆盖率工具吗?那应该给你你想要的大部分。不知道我的头顶上的一个。
  • 你为什么不写你自己的工具?很简单
  • 我创建了一个基于nodejs的web服务,暴露了一些rest api,一些客户端正在使用这些api。我想监控每个API调用的时间,有没有这样的工具?
  • 嗨 Rikky,如何编写工具?我想要一个单独的工具,这样就不会影响 Web 服务的性能。
  • 您使用任何代理吗?我认为最好在那里测量:lincolnloop.com/blog/2010/nov/9/…

标签: javascript performance node.js rest


【解决方案1】:

这里是如何使用 express.js 进行精确时间测量的事件注入示例。

在你的路线之前添加这个:

app.all('*', function(req, res, next) {
  var start = process.hrtime();

  // event triggers when express is done sending response
  res.on('finish', function() {
    var hrtime = process.hrtime(start);
    var elapsed = parseFloat(hrtime[0] + (hrtime[1] / 1000000).toFixed(3), 10);
    console.log(elapsed + 'ms');
  });

  next();
});

它将节省每个请求的开始时间,并在响应发送给客户端后触发finish
感谢 user419127 指向“完成”事件

【讨论】:

  • 每个API都需要调用req.timer.complete()吗?这会影响性能吗?我不想对我的代码做太多的改变,否则会影响性能。
  • 您可以重写您的发送方法为您调用,也可以在每次发送后自行手动调用。您肯定只是使单个函数调用过于复杂-因为性能确实是在复杂的情况下产生的,而不是像测量请求时间这样的小事..
  • 我已经修改了上面的答案,现在已经注入到 res.send 中,根本不需要任何 API 修改。
  • 下面的代码怎么样?不需要覆盖 res.json。 https.createServer(options, function(req, res){ var start = process.hrtime(); expressApp(req, res); res.on('finish', function() { var elapsed = parseFloat((process.hrtime (start)[1] / 1000000).toFixed(3)); console.log(elapsed); }); }).listen(listeningPort);
  • 如果,上帝保佑,您的通话时间超过一秒钟,您将错误的信息打印到控制台。应该是:console.log(t[0] + ":" + elapsed) [其中 t = process.hrtime(start)]
【解决方案2】:

Apache JMeter 这样的性能测量工具怎么样。您可以轻松地使用它来模拟服务器上的(重)负载,然后测量响应时间和其他性能指标。它为此提供了多种图形表示。

Blog Post 展示了如何为 Web-API 设置基于 HTTP 的性能测试。我这样做是为了测试我的 RESTful 网络服务。

【讨论】:

【解决方案3】:

使用 Node.js 中的 console.time('timerName'); console.timeEnd('timerName') 功能保持简单。 'timerName' 显然是可配置的。

例子:

console.time('getCustomers'); console.timeEnd('getCustomers')

输出:

getCustomers: 58ms

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 2019-03-09
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多