现在市面上的压测工具数不胜数,挑几款常用的做个简单的介绍。
ab是apache自带的压力测试工具,使用起来非常方便 。
1. ab运行需要依赖apr-util包,安装命令为:
yum install apr-util
2. 需要yumdownload命令下载,没有该命令的话,可以:
yum install yum-utils
3. 新建一个目录,下载解压用:
cd /opt
mkdir abtmp
cd abtmp
yum install yum-utils.noarch
yumdownloader httpd-tools*
rpm2cpio httpd-tools*.rpm | cpio -idmv
4. 将./user/bin/ab复制到系统bin下即可:
cp /opt/abtmp/usr/bin/ab /usr/bin
5. 使用如下命令查看是否安装成功:
ab -V
6. ab –help可以进行需要的测试
在压测前,需要关注几个选项,通过 ab -help
查看
Options are:
-n requests 要执行的请求次数
-c concurrency 并发数量
-s timeout 响应时间
执行:
# 总共100个并发执行1000此请求,超时时间为1s
ab -n 1000 -c 100 -s 1 http://www.baidu.com
wrk 是一款c语言开发的现代的http性能基准测试工具,使用简单,功能强大。
可以从github上下载源码编译安装 wrk github地址
wrk的命令选项并不多,很容易使用
Usage: wrk
Options:
-c, --connections 建立的连接
-d, --duration 执行测试时间
-t, --threads 线程数量
-s, --script 使用lua脚本(非常强大的功能,有兴趣可以深入研究)
-H, --header 为每一个HTTP请求添加HTTP头
--latency 在压测结束后,打印延迟统计信息
--timeout 超时时间
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
# 10个线程100个连接压测30s
wrk -c100 -t10 -d30s http://www.baidu.com
Apache JMeter 是由java编写的一个GUI测试工具,功能强大且结果多样。
可以去Apache JMeter下载安装。
1. 建立 Plan
2. 建立Thread Group
建立好 Plan后就可以建立Thread Group了, 建立方式:选中Plan 后, Edit > Add > Threads > Thread Group
Thread Group 可以设置线程的一些参数,主要是 Number of Threads(users) 和 Loop Count
3. 添加Listener
Listener主要生成一些结果报告,添加方式为:选中Thread Group后 Edit > Add > Listener
可以看到有很多结果报告,我平时主要用到以下几个结果报告
View Results Tree
Aggregate Report
Graph Results
View Results Table
View Results Tree
这个报告会生成请求树,点击可以查看每个请求的信息
Aggregate Report
这个报告会生成请求的聚合统计信息, 主要参数就是QPS, 传输速度等
Graph Results
强大的图形报告结果
图形结果一些说明
No of Samples(样本数): 代表向服务器发送的请求数目
Deviation(偏离):代表服务器相应时间变化的数据的分布
Latest Sample(最新样本): 表示服务器相应最后一个请求的时间
Throughtput(吞吐率):这里是服务器每分钟对数据的处理量
Average(平均值): 表示总运行的时间除以发送给服务器的请求数
Median(中间值): 代表有一半的服务器时间低于该值,而另一半高于该值
根据图形结果得到的一些分析
吞吐率起步的时候比较低,随着请求数量越来越多,吞吐率先增后减
偏离值还不错,保持一个很平稳的状态 如果偏离数量随着请求数量越来越大, 说明服务器越来越不稳定
借鉴处:https://www.jianshu.com/p/8c622e304e14