先查看siege帮助
输入siege -h
翻译一下常用命令
-c 指定并发数
-r 指定重复次数
-d 指定请求的延迟时间,注意每个请求间随机延迟
-f 指定url列表,可以一次给多个地址加压
-t 指定用例执行时间,比如-t 10s
-t 1M(H)
之类
-g 获取请求的headers信息并打印出来,debug专用
-H 指定请求的headers信息
-l或--log=[File] 指定测试结果的路径
根据帮助文档我们可以直接实战
需求:
1、模拟10个用户同时访问http://www.baidu.com
2、一共跑2个循环
实现:
1、输入:siege -c 20 -r 3 http://www.baidu.com
2、运行后结果
3、了解各字段意思
- Transactions: siege对服务器的访问次数。如果页面发生了redirect,那么siege会将跳转过的请求算成是另一个transaction
- Availability: socket连接的成功率。算法是,如果页面发生了timeout,4xx,5xx,那么该请求算是失败请求,成功率就等于
(所有请求-失败请求) / 总请求数
- Elapsed time: 所有请求耗费的时间
- Data transferred: 所有请求传输的数据量,包括请求的headers和content。所以这个数值可能比server端统计的数值要大一点
- Response time: 平均响应时间
- Transaction rate:
Transactions / Elapsed time
- Throughput: 每秒平均传输的数据量
- Concurrency: 平均并发的请求数
- Successful transactions: 所有status code < 400的transactions数量
- Failed transactions: 所有status code >= 400的transactions数量
- Longest transaction: 最耗时的请求时间
- Shortest transaction: 最短单个请求时间
4、分析结果
我们对http://www.baidu.com用10个用户跑了两个循环,对服务器访问了180次,连接的成功率是85.71%。所有请求耗费的时间是1.60secs,所有请求传输的数据量是2.10M,平均响应时间0.05 secs,吞吐量是112.50 trans/sec,每秒平均传输的数据量是1.31 MB/sec,
平均并发的请求数6.04,请求成功的次数是180次,请求失败的数是30次,最耗时的请求时间是1.01,最短单个请求时间0.00.
有个注意点,就是连接的成功率是85.71%是怎么来的呢?是请求成功数/请求总数。也就是180/180+30
当然这些数据中,我觉得最重要的是Transaction rate,上面这个例子是10个用户跑了两个循环,Transaction rate是112.50 trans/sec,如果这个吞吐量不满足需求,那么我们就可以把这个数据交给开发,让开发进行处理。