我想在控制台中看到响应HTTP请求所需的时间。有点像express.js。
GET api/myurl/ 210ms 200
我跑sails debug
但这并没有显示出多少
我有节点检查器运行,但似乎这让我在运行时检查JavaScript对象,但不是这个特定的东西
是否可以启用Sails中的配置或我可以安装的NPM模块,以便在请求和响应之间找到这个时间?
答案 0 :(得分:12)
如果要测量总响应时间(包括视图生成和将数据推送到套接字),可以使用 startRequestTimer 中间件中定义的 req._startTime 或使用{{3中间件可以提供更准确的结果。
此中间件为所有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);
}
}
}
答案 1 :(得分:6)
@ 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);
}
一点解释:
finish
个res
事件的事件,因为当req
发出end
事件时,res
标题尚未设置。getHeader
更改为get
。答案 2 :(得分:3)
除了@abeja回答(虽然非常好的答案),如果您正在寻找生产应用程序监控,您可能会对New Relic感兴趣。
该工具可帮助您测量(除其他外)响应时间,吞吐量,错误率等。
它还衡量数据库性能(在我的例子中是MongoDB)并帮助您轻松调查瓶颈。
最重要的是,它允许您从浏览器测量应用程序性能(包括连接时间,DOM渲染时间等)。
New Relic设置非常简单 - 只需几步即可运行您的统计信息(更多信息请访问Installing and maintaining Node.js)。出于开发目的,您还可以免费使用24小时数据保留。
我希望这也会有所帮助。
答案 3 :(得分:2)
对于更通用的统计解决方案(也可以在您的Sails.js项目中使用),有一系列关于使用StatsD和Graphite来测量服务器上任何内容(以及所有内容)的digitalocean的大量教程: https://www.digitalocean.com/community/tutorials/an-introduction-to-tracking-statistics-with-graphite-statsd-and-collectd
还有一个很好的StatsD node.js客户端名为Lynx:https://github.com/dscape/lynx以及Lynx的快速中间件来测量快速路由的计数和响应时间:https://github.com/rosskukulinski/lynx-express(Sails是完全的与Express / Connect中间件兼容)
我打算在投入生产之前尽快在我的帆上项目中使用它,在我做的时候会更新详细信息,如果你继续我之前请告诉我..
答案 4 :(得分:1)
我创建了一个Sails Hook,可以简化整个过程。只需使用npm install sails-hook-responsetime --save
安装它,它就会为HTTP和Socket请求添加X-Response-Time。