【问题标题】:How can I check how many requests per second my app can handle?如何检查我的应用每秒可以处理多少个请求?
【发布时间】:2013-04-24 05:39:24
【问题描述】:

我创建了一个新应用,并计划添加缓存、cdn 和其他性能改进方法。我想检查当前的性能,并且在每种方法之后我想再次检查性能。 这是一个 Rails 应用程序。

我应该怎么做?有没有我可以用来检查的命令?我需要进行测试吗?如何? 从我的搜索来看,新的遗物似乎提供了很多这样的信息,但在我看来,这只是在实时数据上,我想测试应用程序可以处理的最大值(例如之前和之后执行上述更改)以及监控实时数据。

【问题讨论】:

    标签: ruby-on-rails performance request performance-testing newrelic


    【解决方案1】:

    它的配置有点复杂,但我建议 jMeter。 您可以在其中构建您的 HTTP(或其他受支持的)请求,设置您的参数、标头。这样您就可以加载测试特定页面。 ab 对于静态页面可能是可靠的,但如果您的网站有数据库交互,您可能希望在负载测试中模拟这些用户交互。

    JMeter User Manual

    Jmeter Tutorial

    【讨论】:

      【解决方案2】:

      New Relic 还允许您存储数据。根据您的帐户类型,您可以获得无限的数据保留。标准类型帐户为您提供 7 天的数据保留期。这应该足以满足您的目的。

      然后您可以使用负载测试应用程序,例如 jMeter 或 Apache bench。还有一些基于网络的工具,例如 blitz.io 和 Loadimpact。

      【讨论】:

      • 当然。 New Relic 可以配置为在您投入生产之前查看您运行负载测试应用程序的暂存站点。
      【解决方案3】:

      一种简单的方法是使用apache bench

      ab -n 2000 -c 200 http://yourdomain.com/
      

      其中 n 是要发出的请求数,c 是要使用的客户端数。

      你会得到一个类似的报告

      Document Path:          /
      Document Length:        36153 bytes
      
      Concurrency Level:      200
      Time taken for tests:   4.544 seconds
      Complete requests:      2000
      Failed requests:        0
      Write errors:           0
      Total transferred:      72732000 bytes
      HTML transferred:       72306000 bytes
      Requests per second:    440.17 [#/sec] (mean)
      Time per request:       454.366 [ms] (mean)
      Time per request:       2.272 [ms] (mean, across all concurrent requests)
      Transfer rate:          15632.19 [Kbytes/sec] received
      
      Connection Times (ms)
                min  mean[+/-sd] median   max
      Connect:       72   77  59.1     73    1075
      Processing:   160  357  96.3    325     636
      Waiting:       73  196  95.9    165     488
      Total:        234  434 109.9    398    1340
      
      Percentage of the requests served within a certain time (ms)
        50%    398
        66%    419
        75%    440
        80%    468
        90%    607
        95%    671
        98%    688
        99%    700
       100%   1340 (longest request)
      

      【讨论】:

      • 太好了,谢谢。我收到Send request timed out! 我该怎么办?这是否意味着我尝试了太多的请求?我应该使用客户端与请求的数字是多少?以及如何确保它不会超时?它不应该只是告诉我“无法完成某些请求”而不是超时吗?
      • 仅供参考,ab 通常与apache 包捆绑在一起。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多