其他性能测试工具
一、wrk
1、k 开源,它的脚本可以写lua,可以进行快速的性能测试,得到一个大概的性能情况,不能做很复杂的脚本来进行测试
2、特点:高并发低资源消耗;安装部署简单;原生支持LuaJIT脚本;不适合做多协议、复杂场景的性能测试
3、安装
3.1 若服务器未安装git先安装git:yum -y install git make gcc ----->> 下载wrk:git clone https://gitee.com/mirrors/wrk.git ---->> 进入下载后的文件夹cd wrk -->> 执行make --->> 就有一个 wrk的可执行文件
注意:没有安装解压工具执行make会报错--make: unzip:命令未找到,解决方式:yum install unzip #提示输入时,请输入y;
./wrk --help
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open 建立连接数量
-d, --duration <T> Duration of test 性能测试时长
-t, --threads <N> Number of threads to use 性能测试的并发用户
数
-s, --script <S> Load Lua script file 你的lua脚本
-H, --header <H> Add header to request 指定消息头
--latency Print latency statistics
--timeout <T> Socket/request 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)
3.2 测试:执行./wrk -t4 -c100 -d30s --latency https://www.baidu.com/`
-t4 用4个并发用户数
-c100 建立100个连接通道
-d30s 持续运行30秒
--latency 显示概要报告
url: 被测地址
Thread Stats Avg Stdev Max +/- Stdev
Latency 113.03ms 110.05ms 1.64s 86.40%
Req/Sec 274.79 45.77 505.00 73.97%
Latency Distribution
50% 79.65ms
75% 124.45ms
90% 258.63ms
99% 501.60ms
32793 requests in 30.07s, 328.43MB read
Socket errors: connect 0, read 132, write 0, timeout 0
Requests/sec: 1090.41
Transfer/sec: 10.92MB
....90%.... : 90%的请求响应时间少于等于这个时间
二、ab
1、是apache自带一个性能测试工具
2、安装:centos系统安装 yum install httpd-tools -y
3、ab --help帮助
-c 并发用户数
-t 持续运行时长
-n 总共运行多少次,默认是5w次
-m 请求方法
4、测试
4.1 请求写法:ab 选项参数 URL
4.2 指定并发用户数与请求次数:ab -c10 -t30 https://www.baidu.com/ 用10个并用户数 持续运行 30s钟
4.3 指定并发用户数:ab -c10 https://www.baidu.com/ 用10个并发用户数,持续请求 5w次,运行的时长不确定
4.4 post请求:ab -c 10 -n1000 -m POST -p user.json -T "application/json" http://ip:port/
测试报告:Finished 4195 requests
Server Software: BWS/1.1
Server Hostname: www.baidu.com
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Document Path: /
Document Length: 227 bytes
Concurrency Level: 10 并发用户数
Time taken for tests: 34.240 seconds
Complete requests: 4195
Failed requests: 0
Write errors: 0
Total transferred: 4660160 bytes
HTML transferred: 952265 bytes
Requests per second: 122.52 [#/sec] (mean)
Time per request: 81.621 [ms] (mean)
Time per request: 8.162 [ms] (mean, across all concurrent requests)
Transfer rate: 132.91 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 26 34 6.4 32 129
Processing: 8 12 6.9 11 238
Waiting: 7 12 6.7 10 238
Total: 34 45 10.8 43 269
Percentage of the requests served within a certain time (ms)
50% 43
66% 45
75% 46
80% 47
90% 51 总的请求量中90%的请求,时间是小于等于这个时间的
95% 59
98% 78
99% 94
100% 269 (longest request)
三、ngrinder
1、是一款开源的性能测试工具,做性能平台开发,可以基于这个工具进行开发,它的脚本语言为Jython、Groovy ,这两门语言,都是java的衍生版本
1.1 jython: java + python, 就是把python的脚本,放到jvm中运行,目前只支持python2.7
1.2 groovy: 纯java的衍生版本,其基础语法类似python,高级用法中集成了java和 python优点,性能与java性能不相上下
1.2.1 jenkins中pieple 需要用groovy来写
1.2.2 jmeter中性能脚本写代码使用JSR223元件+groovy语言
1.2.3 ngrinder写脚本 使用groovy语言
1.2.4 gradle也需要有groovy语言
2、ngrinder做性能测试,是用进程 + 线程
线程模拟多用户并发
线程或进程模拟多用户并发
协程来模拟并发用户数:协程---比线程更细的执行单元;进程---资源拥有者;线程---执行任务的基本单元
3、工具
3.1 ngrinder-Controller
1、工具主体,提供web管理界面
2、创建、维护脚本
3、进行性能测试
4、显示性能测试过程和数据
5、服务对外默认端口8080;内部服务默认端口16001,用于和agent交互数据
3.2 ngrinder-Agent: 产生压力
3.3 ngrinder-controller安装
3.3.1 ava运行环境 一般推荐jdk1.8
3.3.2 把ngrinder-controller-3.5.2.war包上传到一个空linux机器
3.3.3 启动: 可以把包放到 tomcat的webapps中,启动tomcat; 或者java -jar ngrinder-controller-3.5.2.war
建议用 java命令来启动,这种方式启动速度要快一些,如果你用 tomcat来启动,可能需要2分钟左右
3.3.4 登录http://ngrinder_ip:8080 账号:admin 密码:admin
3.3.5 右上角的admin用户名上:下载代理
1、这种方式,自动给我们修改好了agent的配置文件
2、将文件上传到一台机器,可以是ngrinder-controller机器也是可以是其他的
3、解压包 tar -xvf ngrinder-agent-xxxxx.tar
4、第一次: run_agent_internal.sh
run_agent_bg.sh 把agent放到后台运行
run_agent.sh 运行
3.4 写脚本
3.4.1 顶部功能栏---》脚本----》创建----》新建脚本 ----》选择语言----》填写测试URL,body,请求头等------》点击保存
3.5 创建测试
3.5.1 顶部功能栏---》性能测试 ---》创建测试 ---》输入代理,虚拟用户数 ---》目标主机 ---》点击保存并运行
3.5.2 修改selinux:服务器输入: vi /etc/selinux/config ---》按i切换为插入模式 ---》将 SELINUX=改为permissive ---》输入:x退出保存