1:性能测试相关概念
1:技术手段
并发测试:
狭义:用户在同一时间内做同一件事情--秒杀测试(集合点)--1000用户集合之后同时点击某个按钮。
广义:很多用户在同一时间同时操作不同的功能或混合场景(登录,下单,支付)
负载测试:50-100-150用户或请求(1,2,4阶梯增压)不断的加压,找到TPS拐点(tps增量明显变小)
压力测试:
1:稳定性压力测试
1:维持tps高值(饱和值:最优tps的90%)持续一段时间运行
2:资源饱和(饱和cpu内存处于90%)持续一段时间运行
目的:发现内存泄露出
2:破坏性压力测试
直接加压到导致系统崩溃快速暴露问题
3:失效恢复测试
目的用于验证部分系统发生故障时,整个系统是否能够继续让用户使用的能力
破坏性压力测试后,服务器压力降低之后,即时恢复
4:容量测试
按线上真实业务比例分配进行测试
2:稳定的环境(性能测试准入条件):
网络:带宽稳定,规避网络高峰期
3:jmeter配置
1:日志
日志设置:log.error级别(路径:Options(选项)--Log Level)
查看结果数勾选仅日志错误:
2:cookie(配置文件中设置cookie为true)
CookieManager.save.cookies=true
3:报告格式改为csv,因为命令行会报错
4:快捷键(ctrl+0,1,2,3....)
0:添加线程组 1:添加http请求 2:正则表达提取器 3:响应断言 4:固定定时器 9:查看结果树
5:保持长连接(30秒)
jmeter配置
1:配置文件设置httpclient4.idletimeout=30000,httpclient4.time_to_live=30000
2:请求advanced选择HttpClient4
3:请求勾选长链接
4:本机注册表regedit-加keepAliveTime设置30
6:cps:每秒网络传输速度(带宽值)
(预期传输速度*1024)/8=cps 50m*1024/8=6400kb
6.准入检测(空载)
JVM内存 cpu利用率(10%) 磁盘和内存总量都小于30%
7:性能指标(先确保没有error在进行测试,不然没有意义)
1:每秒请求数:RPS(qps)
jmeter能支持多少线程
用户最大可用内存(进程查看)=MaxHeap堆内存(jmeter.bat设置)+xss(默认1m)*线程数
9g=1g(jmeter已设置的默认1024m,可以自己设置)+1m*线程数 线程数=8000
2:每秒事务数:TPS(优化接近RPS)---服务器每秒处理的事务数
3:响应时间--接口响应在1s内
用户角度:浏览器加载 服务器响应 页面2次渲染
压力机角度:tcp连接 服务器响应
4:吞吐量
一次性能测试中网络上传输数据的总和,反映系统的负载能力
5:成功率
不能低于98%,一般无线接近100%
6: cpu:us+sy正常在50-70之间(持续) 太低:cpu浪费 太高:压力过载
7: 内存:使用持续高于80%是有问题 (free -m)
load:负载持续不能高于内核总数 (top下敲1查看内核总数)
负载0.00+0.00+0.07<2
8:带宽---不要消耗超过50%
二:jmeter基本配置
1:目录
backups:只要保存了,脚本都会存在该目录下。
bin:需要cmd去运行输入jmeter.bat,输入jmeter或双击运行都不会加载jmeter.properties文件,导致配置文件无效。
ApacheJMeterTemporaryRootCA.crt--https证书,测试https接口必须有
extras:ant-jmeter-1.1.1.jar ant包
jmeter性能测试原理---基于多线程,协议,场景
三:http代理抓包