我创建了一个新应用程序,并计划添加缓存、cdn 和其他性能改进方法。我想检查当前的性能,并且在每种方法之后我想再次检查性能。这是一个 Rails 应用程序。
我应该怎么做?有没有我可以用来检查的命令?我需要进行测试吗?如何?从我的搜索来看,新的遗物似乎提供了很多这样的信息,但在我看来,这只是在实时数据上,我想测试应用程序可以处理的最大值(例如之前和之后执行上述更改)除了监控实时数据。
我创建了一个新应用程序,并计划添加缓存、cdn 和其他性能改进方法。我想检查当前的性能,并且在每种方法之后我想再次检查性能。这是一个 Rails 应用程序。
我应该怎么做?有没有我可以用来检查的命令?我需要进行测试吗?如何?从我的搜索来看,新的遗物似乎提供了很多这样的信息,但在我看来,这只是在实时数据上,我想测试应用程序可以处理的最大值(例如之前和之后执行上述更改)除了监控实时数据。
一种简单的方法是使用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)
New Relic 还允许您存储数据。根据您的帐户类型,您可以获得无限的数据保留。标准类型帐户为您提供 7 天的数据保留期。这应该足以满足您的目的。
然后,您可以使用负载测试应用程序,例如 jMeter 或 Apache bench。还有一些基于 Web 的工具,例如 blitz.io 和 Loadimpact。
配置起来有点复杂,但我建议jMeter。您可以在其中构建您的 HTTP(或其他受支持的)请求,设置您的参数、标头。这样您就可以加载测试特定页面。ab对于静态页面可能是可靠的,但如果您的网站具有数据库交互,您可能希望在负载测试中模拟这些用户交互。