如何检查我的应用程序每秒可以处理多少请求?

6
我创建了一个新的应用程序,并计划添加缓存、CDN和其他性能改进方法。我想要检查当前的性能,以及在每种方法之后,我想再次检查性能。 这是一个Rails应用程序。
如何处理呢?是否有命令可以使用来检查此内容?我需要运行测试吗?如何操作? 从我搜索到的信息来看,似乎New Relic提供了很多这方面的信息,但我认为那只是针对实时数据的,而我想要测试应用程序能够处理的最大负载(例如,在执行上述更改之前和之后),并监视实时数据。
3个回答

7

一个简单的方法是使用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)

太好了,谢谢。我收到了“发送请求超时!”的提示,我该怎么办?这是不是意味着我尝试了太多的请求?我应该使用多少个客户端和请求?如何确保它不会超时?它不应该只告诉我“无法完成某些请求”,而不是超时吗? - Lucy Weatherford
FYI,“ab”通常与“apache”软件包捆绑在一起。 - Zaz

1
新的Relic还允许您存储数据。根据您的帐户类型,您可以获得无限数据保留时间。标准类型帐户为您提供7天的数据保留时间。这应该足够您的目的。
然后,您可以使用负载测试应用程序,例如jMeter或Apache bench。还有基于Web的工具,如blitz.io和Loadimpact。

当然可以。New Relic 可以配置为查看您的暂存站点,在那里您可以在进入生产之前运行负载测试应用程序。 - sockmonk

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

JMeter用户手册

Jmeter教程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接