一、在linux环境下安装siege
sudo apt-get update && sudo apt-get upgrade --show-upgraded(更新系统可更新可不更新)
sudo apt-get install 软件名
1、下载最新版本的siege
wget http://download.joedog.org/siege/siege-latest.tar.gz
2、解压并进入siege路径
tar -zxvf siege-latest.tar.gz
cd siege-*/
如果没有安装编译工具,请先安装
sudo apt-get install build-essential
编译安装
./configure
make
sudo make install
创建配置文件
siege.config
修改配置文件
打开~/.sige/sige.conf文件,修改logfile选项
logfile=$(HOME)/sige.log
二、siege的常见参数
-h帮助
-c 指定并发数(是真并发)
-r 指定重复次数
-d 指定请求的延迟时间,注意每个请求间的随机延迟(模拟用户的思考时间,最多延迟一分钟,其他都是随机默认在一分钟之内)
-f 指定url列表,可以一次给多个地址加压(多用于翻页的Url测试)
-t 指定用例执行时间,比如,-t 10s,-t 1M(H)之类(主要用于稳定性性测试,长时间进行加压,最容易发现内存泄露的问题)
-g 获取请求的headers信息并打印出来,debug专用
-H指定请求的headers信息
-l或者--log=[File]指定测试结果的路径
三、测试结果的分析
Transactions: 600 hits
Availability: 90.91 %
Elapsed time: 14.19 secs
Data transferred: 34.26 MB
Response time: 0.28 secs
Transaction rate: 42.28 trans/sec
Throughput: 2.41 MB/sec
Concurrency: 11.63
Successful transactions: 600
Failed transactions: 60
Longest transaction: 7.05
Shortest transaction: 0.02
· 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: 最短单个请求时间
curl命令
curl -I http://www.baidu.com
curl -H"Accept-Encoding:gzip" -I http://www.baidu.com
curl -H"Accept-Encoding:gzip" http://www.baidu.com
curl http://www.baidu.com
往urls.txt里面新增内容
echo "http://www.baidu.com">>urls.txt
安装lrzsz,这样就能传输文件
sudo apt-get intall lrzsz
实战:
需求1: 使用siege对多个页面进行加压
作为项目的负责人,我希望各位同学可以对ur.tencent.com的下面几个页面进行加压,以便暴露系统的瓶颈。
http://ur.tencent.com/categories/7
http://ur.tencent.com/categories/7/?page=2
http://ur.tencent.com/categories/7/?page=3
我希望并发数是5,持续运行1分钟。
siege -c 5 -t 1M -f urls.txt
需求2: 保存siege日志
作为项目的负责人,我希望各位同学可以对ur.tencent.com的下面几个页面进行加压,以便暴露系统的瓶颈,并将结果记录到日志。
http://ur.tencent.com/categories/7
http://ur.tencent.com/categories/7/?page=2
http://ur.tencent.com/categories/7/?page=3
siege -c 5 -t 1M -f urls.txt --log=result.csv
csv文件可以直接用excel打开
可以使用命令sz result.csv将结果文件拷贝到本地
如果没有sz命令使用sudo apt-get intall lrzsz安装既可
需求3: 压测时候启用gzip压缩
gzip压缩就是指服务器在返回请求时候先将请求压缩一下,以减少response的体积,客户端收到response之后会自行解压,这是提升传输速度的一般做法。
我们仍然对上面的url进行加压,不过这次我们需要使用gzip。
在请求头中加入Accept-Encoding:gzip就可以告诉服务器返回压缩后的response。
siege -c 5 -t 1M -f urls.txt -H "Accept-Encoding:gzip" --log=result_gip.csv
siege的缺点只能在linux下运行