Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何测量Sails.js请求/响应时间_Node.js_Sails.js - Fatal编程技术网

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

Node.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

我想在控制台中查看HTTP请求响应所需的时间。有点像express.js

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
    emit
    end
    事件时,
    res
    头尚未设置
  • 最近的Node.js将API
    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
    中,我得到了一个与其他中间件的订单数组如果可能的话,响应时间记录器应该在列表的顶部。我已经创建了一个钩子来添加所有需要的东西。在下面检查我的答案