Node.js 如何测量Sails.js请求/响应时间
我想在控制台中查看HTTP请求响应所需的时间。有点像express.jsNode.js 如何测量Sails.js请求/响应时间,node.js,sails.js,Node.js,Sails.js,我想在控制台中查看HTTP请求响应所需的时间。有点像express.js GET-api/myurl/210ms-200 我运行了sails debug,但这并没有显示太多内容。 我已经运行了node inspector,但这似乎可以让我在运行时检查JavaScript对象,而不是这个特定的东西。 我是否可以在Sails中启用配置,或者安装NPM模块来确定请求和响应之间的时间?如果您想测量总响应时间(包括视图生成和将数据推送到套接字)您可以使用startRequestTimer中间件中定义的re
GET-api/myurl/210ms-200
我运行了sails debug
,但这并没有显示太多内容。我已经运行了node inspector,但这似乎可以让我在运行时检查JavaScript对象,而不是这个特定的东西。
我是否可以在Sails中启用配置,或者安装NPM模块来确定请求和响应之间的时间?如果您想测量总响应时间(包括视图生成和将数据推送到套接字)您可以使用startRequestTimer中间件中定义的req.\u startTime,也可以使用提供更精确结果的中间件 该中间件向所有HTTP响应添加了一个X响应时间头,以便您可以在客户端和服务器端对其进行检查
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 answer(非常好的答案),如果您正在寻找生产应用程序监控,您可能会对它感兴趣 该工具帮助您测量(除其他外)响应时间、吞吐量、错误率等 它还测量数据库性能(在我的例子中是MongoDB),并帮助您轻松地调查瓶颈 除此之外,它还允许您从浏览器测量应用程序性能(包括连接时间、DOM呈现时间等) New Relic的设置非常简单-只需几个步骤即可运行统计数据(更多信息请参见此处)。出于开发目的,您还可以拥有24小时数据保留的免费帐户
我希望这也会有所帮助。对于更通用的统计解决方案(也可以在您的Sails.js项目中使用),有一系列关于digitalocean的教程,介绍如何使用StatsD和Graphite来测量服务器上的任何东西(和所有东西): 还有一个很好的StatsD node.js客户端,名为Lynx:以及一个用于Lynx的express中间件,用于测量express routes的计数和响应时间:(Sails与express/Connect中间件完全兼容)
我计划在投入生产之前很快在我的sails项目中使用此工具,我会在使用时更新更多细节,如果您在我之前使用,请告诉我。@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
emitend
事件时,res
头尚未设置getHeader
更改为get
顺便说一句,我的名声是0,所以我不能对@abeja的回答发表评论:)我已经创建了一个帆钩,可以简化整个过程。只需使用
npm install sails hook responsetime--save
安装它,它将为HTTP和套接字请求添加X响应时间
谢谢您的添加。我不会让它成为正确的答案,因为@abeja的答案就是我一直在寻找的答案。但它是监视节点性能的一个非常重要的补充。:)这似乎也很有用。所有这些工具都是免费/开源的吗?New relic看起来很酷,很容易安装,但是现在150/m太多了。是的:)这些工具的美妙之处在于它们完全可以定制,它们是开源的,事实上,你(几乎)从头开始构建一切,比如跟踪什么和如何跟踪,幸运的是有lynx express用于标准express/sails路线跟踪,但是你也可以添加和定制。我目前使用的是免费版本的newrelic,但我并不完全满意,我会在有更多时间的时候考虑这个解决方案。还要记住,graphite是一个非常强大的演示引擎。在这种情况下,顺序应该是什么,在
config/http.js
中,我得到了一个与其他中间件的订单数组如果可能的话,响应时间记录器应该在列表的顶部。我已经创建了一个钩子来添加所有需要的东西。在下面检查我的答案