1 http_load
1.1 官方网站
- 描述:
- http_load runs multiple http fetches in parallel, to test the throughput of a web server. However unlike most such test clients, it runs in a single process, so it doesn't bog down the client machine. It can be configured to do https fetches as well.
- You give it a file containing a list of URLs that may be fetched, a flag specifying how to start connections (either by rate or by number of simulated users), and a flag specifying when to quit (either after a given number of fetches or a given elapsed time). There are also optional flags for checksums, throttling, random jitter, and progress reports.
- 地址:
1.2 具体操作及说明
- 常用样例
http_load -parallel 5 -fetches 1000 urls.txt
http_load -rate 2 -seconds 300 urls.txt
- 样例含义
- -parallel 简写-p :含义是并发的用户进程数。
- -fetches 简写-f :含义是总计的访问次数
- -rate 简写-r :含义是每秒的访问频率
- -seconds简写-s :含义是总计的访问时间
- urls.txt 是一个url 列表,每个url 单独的一行;不可以直接跟一个url,有些博客主说的可以跟一个url是错误的说法。
- 返回结果
http_load -rate 5 -seconds 10 urls
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
HTTP response codes:
code 200 -- 49
- 结果含义
- 49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
- 说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒
-
- 5916 mean bytes/connection
- 说明每一连接平均传输的数据量289884/49=5916
-
- 4.89274 fetches/sec, 28945.5 bytes/sec
- 说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytes/sec
-
- msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
- 说明每连接的平均响应时间是28.8932 msecs,最大的响应时间44.243 msecs,最小的响应时间24.488 msecs
-
- msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
-
- HTTP response codes: code 200 -- 49
- 说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
- 特殊说明
- 一般会关注到的指标是fetches/sec、msecs/connect,它们分别对应的常用性能指标参数QPS-每秒响应用户数和response time,每连接响应用户时间。测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分 析,才能得出结论;
- 如果要测试HTTPS,需要在编译前指定Makefile中 SSL_TREE 的路径:一般为 /usr 或 /usr/local 。
2 ab
2.1 官方网站
- 描述:
- ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.
- 地址:
2.2 具体操作
- 常用样例
ab -n 1000 -c 50 http://www.domain.com/myapp.php
- 样例说明
- ab将同时向http://www.domain.com/myapp.php发出50个并发请求,共发出1000次。
- 返回结果
Server Software: nginx/0.6.25
Server Hostname: www.domain.com
Server Port: 80
Document Path: /myapp.php
Document Length: 37899 bytes
Concurrency Level: 100
Time taken for tests: 26.507540 seconds
Complete requests: 2000
Failed requests: 14
(Connect: 0, Length: 14, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 75931178 bytes
HTML transferred: 75439670 bytes
Requests per second: 75.45 [#/sec] (mean)
Time per request: 1325.377 [ms] (mean)
Time per request: 13.254 [ms] (mean, across all concurrent requests)
Transfer rate: 2797.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 24 640 1310.9 34 7478
Processing: 86 590 2230.9 124 23256
Waiting: 0 55 207.7 41 8292
Total: 112 1230 2501.0 169 23304
-
- 部分返回字串省略,这里只表示关键部分;
- myapp.php每秒钟可以处理的请求数为75.45个
- 特殊说明
- 若将请求数增加,看看服务器能否处理更大的压力,需要调节Apache的 MaxClients、ThreadsPerChild、MaxThreadsPerChild 等参数,基于httpd.conf中的MPM模块选择。
- 若本地服务器不是Apache,请使用其它测试方法。