1、分布式压测:多台机器向一个目标服务器进行压测。(单机器性能有限)
2、jmeter分布式压测原理:主机,肉鸡必须在同一个网段。
1.Jmeter
分布式测试时,选择其中一台作为调度机(master
),其它机器做为执行机(slave
)。
2. 执行时,master会把脚本发送到每台slave
上,slave
拿到脚本后就开始执行,slave
执行时不需要启动GUI
,我理解它应该是通过命令行模式执行的。
3. 执行完成后,slave
会把结果回传给master
,master
会收集所有slave
的信息并汇总。
2、要求
主机和从机处于一个局域网内,master
主机中jmeter.properties
中修改文件,这里的主机也当作一个从机
remote_hosts=127.0.0.1:1888,9.9.15.192:1888
server_port=1888
server.rmi.localport = 1888
slave
从机中修改:
remote_hosts=127.0.0.1
server_port=1888
server.rmi.localport=1888
主机从机同时启动jmeter-server.bat
,主机启动jmeter.bat
,启动jmeter
服务,点击运行
查看结果树,从机的信息会汇总到主机中查看,这里是没有详细信息:
补充:阿里云开发接口
1、阿里云部署jdk
环境
1、阿里云Centos
服务器安装jdk
环境,参考腾讯实验室:https://cloud.tencent.com/developer/labs/lab/10035
2、上传spring-boot
文件到usr/local/app
目录下,运行该文件:java -jar gs-spring-boot-0.1.0.jar
3、访问接口地址ip:8080/users
,(注意阿里云需要到安全组打开TCP/8080端口)
4、上传apache-jmeter-4.0.tgz
至服务器目录/usr/local/jmeter
,解压tar zxvf apache-jmeter-4.0.tgz
2、使用本地jmeter
编写测试脚本(服务器三接口要开启,ip
地址是外网或者内网ip
),保存文件上传至/usr/local/jmeter/temp
目录。
3、切换到服务器中jmeter
的bin
目录下,执行测试脚本,./jmeter -n -t /usr/local/jmeter/temp/user_info_api.jmx -l /usr/local/jmeter/temp/result.jtl
常用测试脚本命令
jmeter -n -t linux_users_api.jmx -l result.jtl -e -o /usr/local/softwate/jmeter/temp/ResultReport
jmeter -n -t /Users/jack/Desktop/linux_users_api.jmx -l result.jtl -e -o /Users/jack/Desktop/person/jmeter/temp
4、xftp
下载结果报告result.jtl
,在jmeter
中新建一个summary report
,浏览打开报告
3、jmeter
压测优化优化(-l 禁用已有的测试报告)
GUI
模式:jmeter -n -t test.jmx -l result.jtl
Listener
, 如果使用-l
参数,它们都可以被删除或禁用。(禁用观察树)CSV
输出而不是XML
CSV Read
方式读取。GUI
模式向服务器施压 jmtere
压测结果转换为Html
报表(-l,生成对应报告地址,同时也是防止报错(禁用监听器))
jmeter -n -t /usr/local/software/jmeter/temp/linux_users_api.jmx -l /usr/local/software/jmeter/temp/jtl/result.jtl -e -o /usr/local/software/jmeter/temp/result
1、做8万次,查看报告
得到一个html
报告,下载到本地后打开,首先表格里面可以看到
其中详细数据意义:
lable:sampler采样器名称
Average:平均响应时间
Min:最小响应时间
Max:最大响应时间
90th pct: 90%的用户响应时间不会超过这个值(关注这个就可以了)
2ms,3ms,4,5,2,6,8,3,9
95th pct: 95%的用户响应时间不会超过这个值
99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)
throughtput:Request per Second吞吐量 qps
received:每秒从服务器接收的数据量
send:每秒发送的数据量
报表里面可以看到:
*
Response Times Over Time
:响应时间变化趋势
*Response Time Percentiles Over Time (successful responses)
:最大,最小,平均,用户响应时间分布
*Active Threads Over Time
:并发用户数趋势
*Bytes Throughput Over Time
:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受
*Latencies Over Time
:平均响应延时趋势
*Connect Time Over Time
:连接耗时趋势
Hits Per Second (excluding embedded resources)
:每秒点击次数
*Codes Per Second (excluding embedded resources)
:每秒状态码数量Transactions Per Second
:即TPS
,每秒事务数Response Time Vs Request
:响应时间和请求数对比Latency Vs Request
:延迟时间和请求数对比
*
Response Time Percentiles
:响应时间百分比
*Response Time Overview
:响应时间概述
*Time Vs Threads
:活跃线程数和响应时间
*Response Time Distribution
:响应时间分布图