如何测量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); }
一点解释:
- 听
res
对象的finish
事件,因为当req
发出end
事件时,res
头还没有设置。 - 最近Node.js更改API
getHeader
来get
。
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请求中。