缘由
最近网站老是崩溃卡死,差不多有10来分钟无法正常运行,这就想到了测试工具,同时也检测一下到底是哪里配置出问题了;这个压力测试工具有许多,我用过apache的ab,以及最近用的siege工具;
ab
这个只要服务器运行的是apache就基本带有;
一、安装
sudo apt-get install apache2-utils
二、测试
ab -n 100 -c 10 url
其中-n表示请求数,-c表示并发数
三、解释
Concurrency Level: 100 //并发请求数
Time taken for tests: 50.872 seconds //整个测试持续的时间
Complete requests: 1000 //完成的请求数
Failed requests: 0 //失败的请求数
Total transferred: 13701482 bytes //整个场景中的网络传输量
HTML transferred: 13197000 bytes //整个场景中的HTML内容传输量
Requests per second: 19.66 [#/sec] (mean) //吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
Time per request: 5087.180 [ms] (mean) //用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
Time per request: 50.872 [ms] (mean, across all concurrent requests) //服务器平均请求处理时间,大家最关心的指标之三
Transfer rate: 263.02 [Kbytes/sec] received //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
siege
一、安装
- 下载地址
- 下载安装
wget http://download.joedog.org/siege/siege-latest.tar.gz tar -xvf siege-latest.tar.gz cd siege-4.0.4/(注意替换成当前版本号) ./configure make make install
- 检查:
siege -V
出现类似SIEGE 4.0.4,则安装成功
二、基本使用
-
创建url.txt,文件名随意,其内容为网站地址,可多个地址(一行只能有一个);
vi url.txt
-
测试
siege -c 25 -t 5s -d 1 url.txt
附加 | 含义 |
---|---|
-c | 线程数(用户数)25 |
-t | 持续时间 5s |
-d | 每个请求的延迟时间,在1和d之间 1s |
url.txt | 进行测试的url,也可以是一个TXT文件,随机同时测多个url |
三、配置文件
-
查看配置文件目录:
siege --config
会打印出一系列配置,其中resource file指示的目录为配置文件 ex : ~/.siege/siege.conf
-
可能需要修改的参数:
1 . limit:最大并发数,默认25或者255,当你-c值超过此值会使用默认值,建议修改为一个比较大的数值,比如100000
2 . failures:最大失败数,达到此值会自动终止测试,建议修改为较大值,100000
四、测试报告
Transactions: 250 hits
Availability:100.00 %
Elapsed time: 14.67 secs
Data transferred: 448000 bytes
Response time: 0.43 secs
Transaction rate: 17.04 trans/sec
Throughput: 30538.51 bytes/sec
Concurrency: 7.38
Status code 200: 250
Successful transactions: 250
Failed transactions: 0
Longest transaction:0.22
Shortest transaction:0.01
解析:
Transactions=Successful transactions:成功请求总数
Availability:正确率(成功率)
Elapsed time:总耗时
Data transferred:交换的数据量
Response time:请求平均响应时间
Transaction rate:单位时间内请求数,公式:Transactions / Elapsed time
Throughput:吞吐量,单位时间内交换的数据量,公式:Data transferred / Elapsed time
Concurrency:并发数(估算值),公式:Transactions * Response time / Elapsed time
Failed transactions:失败请求数
Longest transaction:最长请求时间
Shortest transaction:最短请求时间