对于web应用,我们经常需要进行一些基本的测试,如 吞吐量测试, 压力测试等, 本文将介绍几款实用的测试工具,如 http_load, siege, web bench等。
tar zxf http_load-14aug2014.tar.gz
cd http_load-14aug2014
make && make install
-checksum 第一次抓取每个URL后,计算校验和,以后每次请求都重新计算并比较。不加该配置,则只有byte count被检查。
-throttle 模拟调制解调器,数据传输率控制为33.6Kbps
-proxy host:port 通过一个代理来运行http_load
-timeout 等待空闲连接的超时时间,默认60s
-sip sip_file 指定IP源地址列表,每行一个IP(必须是真实可达的IP地址)
-fetches/-f 访问次数
-rate/-r 每秒的访问频率
-seconds/-s 访问时间
-parallel/-p 并发访问的线程数
url_file url列表文件, 每行一个url
# 同时使用5个进程,随机访问urls中的地址1000次
http_load -p 5 -f 1000 urls
1000 fetches, 5 max parallel, 2.13949e+08 bytes, in 231.488 seconds
213949 mean bytes/connection # 每连接平均传输213949b
4.31988 fetches/sec, 924234 bytes/sec #每秒仅能承受4次访问, 每秒传输924234b
msecs/connect: 354.165 mean, 4169.44 max, 7.335 min #每连接平均需要354ms, 最大4169ms, 最小7ms
msecs/first-response: 461.859 mean, 1923.96 max, 294.593 min
HTTP response codes:
code 200 -- 1000
# 30s内保持每秒5次访问的频率
http_load -r 5 -s 30 urls
tar zxf siege-latest.tar.gz
cd siege-3.0.9
./configure && make && make install
-V, --version 版本信息
-h, --help 文档信息
-C, --config 当前的siege的配置信息, 默认配置文件在PREFIX/siege.config
-v, --verbose 打印通知
-q, --quiet 安静模式,不输出信息
-g, --get 拉去请求头,显示处理过程(用于调试)
-c, --concurrent=NUM 并发用户数,默认10
-i, --internet 用户模拟,随机点击
-b, --benchmark 基准: 请求间没有延迟.
-t, --time=NUMm 测试时间
-r, --reps=NUM 运行次数
-f, --file=FILE url列表文件
-R, --rc=FILE RC, specify an siegerc file
-l, --log[=FILE] 日志文件,默认PREFIX/var/siege.log
-m, --mark="text" MARK, mark the log file with a string.
-d, --delay=NUM 每个请求间的延迟(1~NUM)(不作统计)
-H, --header="text" 设置请求头
-A, --user-agent="text" 设置User-Agent
-T, --content-type="text" 设置Content-Type
# 模拟30个客户端,每个进行10次请求
siege -q -c 30 -r 10 -f urls.txt
Transactions: 296 hits # 总请求数
Availability: 100.00 % # 有效请求100%
Elapsed time: 126.57 secs # 总使用126s
Data transferred: 25.67 MB # 总传输数据25.67MB
Response time: 0.62 secs # 请求响应时间
Transaction rate: 2.34 trans/sec # 每秒2次处理
Throughput: 0.20 MB/sec # 每秒0.2M数据传输
Concurrency: 1.46 # 并发度
Successful transactions: 296 # 成功请求296次
Failed transactions: 0 # 失败0次
Longest transaction: 3.80 # 最长处理时间
Shortest transaction: 0.10 # 最短处理时间
# 以10个客户端请求10s
siege -c 10 -t 10S -f urls.txt
Date & Time, Trans, Elap Time, Data Trans, Resp Time, Trans Rate, Throughput, Concurrent, OKAY, Failed
2015-02-26 20:17:05, 5263, 1283.07, 453, 4.13, 4.10, 0.35, 16.93, 5263, 32
2015-02-26 20:59:28, 2950, 2526.40, 255, 0.68, 1.17, 0.10, 0.79, 2950, 0
2015-02-26 21:02:03, 296, 126.57, 25, 0.62, 2.34, 0.20, 1.46, 296, 0
2015-02-26 21:47:36, 130, 9.08, 11, 0.21, 14.32, 1.21, 3.03, 130, 0
tar zxf webbench-1.5.tar.gz
cd webbench-1.5
make && make install
-f|--force 不等待服务器回复
-r|--reload 发送reload请求(Pragma: no-cache)
-t|--time <sec> 运行多少秒,默认30s
-p|--proxy <server:port> 使用代理服务器
-c|--clients <n> 并发客户端,默认1个
-9|--http09 HTTP/0.9
-1|--http10 HTTP/1.0
-2|--http11 HTTP/1.1
--get GET请求
--head HEAD请求
--options OPTIONS请求
--trace TRACE请求
# 10个客户端运行10秒
webbench -t 10 -c 10 -1 --get http://item.jd.com/1020541924.html
Benchmarking: GET http://item.jd.com/1020541924.html
10 clients, running 10 sec.
Speed=6 pages/min, 29257 bytes/sec.
Requests: 1 susceed, 0 failed.