如何测量Sails.js请求/响应时间

我希望在控制台中看到响应HTTP请求的时间。 有点像express.js。

GET api/myurl/ 210ms 200

我运行sails debug但这并没有显示太多。
我有节点检查器运行,但似乎这让我检查运行时的JavaScript对象,但不是这个特定的事情。
在我可以启用的Sails中是否有configuration,或者我可以安装以找出请求和响应之间的NPM模块?

如果要测量总响应时间(包括视图生成和将数据推送到套接字),则可以使用startRequestTimer中间件中定义的req._startTime或使用响应时间中间件,该中间件可提供更准确的结果。

这个中间件为所有HTTP响应添加一个X-Response-Time头,这样你就可以在客户端和服务器端进行检查。

 module.exports.http = { middleware: { order: [ 'responseTimeLogger', // ... ], // Using built-in variable defined by Sails responseTimeLogger: function (req, res, next) { req.on("end", function() { sails.log.info('response time: ' + new Date() - req._startTime + 'ms'); }); next(); }, // Using response-time middleware responseTimeLogger: function (req, res, next) { req.on("end", function() { sails.log.info('response time: ' + res.getHeader('X-Response-Time')); }); require('response-time')()(req, res, next); } } } 

@ abeja的答案很好,但有点过时了。 如果有人仍然在寻求答案,我把下面的最新版本:

 // Using response-time middleware responseTimeLogger: function(req, res, next) { res.on("finish", function() { sails.log.info("Requested :: ", req.method, req.url, res.get('X-Response-Time')); }); require('response-time')()(req, res, next); } 

一点解释:

  1. res对象的finish事件,因为当req发出end事件时, res头还没有设置。
  2. 最近Node.js更改API getHeaderget

btw,我的声望是0,所以我不能发表评论@ abeja的回答:)

除了@abeja答案(尽pipe非常好的答案),如果您正在寻找生产应用程序监控,您可能会对New Relic感兴趣。

该工具可帮助您衡量(除其他外)响应时间,吞吐量,错误率等

新的遗物交易

它也衡量数据库性能(在我的情况下,它是MongoDB),并帮助您轻松调查瓶颈。

在这里输入图像描述

最重要的是,它允许您从浏览器中测量应用程序性能(包括连接时间,DOM渲染时间等)

New Relic的设置非常简单 – 只需几个步骤就可以运行统计信息(更多信息请参见: 安装和维护Node.js )。 为了开发目的,您也可以免费使用24小时数据保留。

我希望这也会有所帮助。

对于更通用的统计解决scheme(也可以在您的Sails.js项目中使用),有关Digitalocean的一系列教程使用StatsD和Graphite来测量服务器上的所有内容(以及所有内容): https:// www。 digitalocean.com/community/tutorials/an-introduction-to-tracking-statistics-with-graphite-statsd-and-collectd

另外还有一个名为Lynx的StatsD node.js客户端: https : //github.com/dscape/lynx ,还有一个用于测量快速路由计数和响应时间的高速中间件: https : //github.com/rosskukulinski/ lynx-express (Sails与Express / Connect中间件完全兼容)

我打算在投入生产之前尽快在我的帆船项目上使用它,当我这样做的时候会更新这个更详细的信息,让我知道如果你在我做之前继续。

我创build了一个可以简化整个过程的Sails Hook。 只需使用npm install sails-hook-responsetime --save来安装它,它就会将X-Response-Time添加到HTTP和Socket请求中。

https://www.npmjs.com/package/sails-hook-responsetime