JMeter性能压测
一、JMeter入门
1. 介绍:JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,它可以用于测试静态和动态资源,也可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
2. 下载并安装jmeter
A. 前往官网下载jmeter,下载后解压即可使用,但需要本地拥有JDK环境;
B. 安装包核心bin目录
jmeter.bat:windows下启动文件,双击就会打开jmeter的可视化界面,还可以对该文件配置进行优化;
jmeter-server.bat:windows下jmeter服务器模式启动文件;
jmeter.properties:jmeter核心配置文件,常见如下:
1 2 3 4 5 6 7 | #Preferred GUI language. Comment out to use the JVM default locale's language. # 设置默认语言为中文 language=zh_CN # The encoding to be used if none is provided ( default ISO- 8859 - 1 ) # 解决响应结果中文乱码问题 sampleresult. default .encoding=UTF- 8 |
C. Linux下运行压测:jmeter -n -t /jmeter/login-linux.jmx -l log.jtl,生成的log.jti可以用可视化界面聚合报告查看;
export JAVA_HOME=/root/jdk1.8.0_361 export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin export JMETER_HOME=/root/apache-jmeter-5.4.3 export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
3. 创建测试计划(Test Plan),并保存到指定的文件夹下
A. 测试计划是运行jmeter时需要执行的一系列步骤,至少包含一个脚本,线程组、取样器和监听器;
B. 作用域规则:测试树元件是分等级和顺序的,从上往下依次执行的;
二、JMeter常用组件
1. 线程组(Thread Group)
A. 线程组是一系列线程的集合,每个线程代表一个用户向服务器发起请求;
B. 线程组下可以添加取样器(sampler),支持发送HTTP和JDBC请求等;
2. 处理器(Processors)
A. 处理器分为前置处理器(Pre Processors)和后置处理器(Post Processors),分别用于修改请求数据,处理响应数据;
3. 定时器(Timer)
A. 定时器是能让性能测试更接近于真实,因为真实的业务用户请求是有一定的时间差,那么合理的设置定时器,能更好的挖掘系统的瓶颈和评估性能指标,定时器类型如下:
B. 常数吞吐量定时器(Constat Throughput Timer):控制每分钟请求数,用于使服务器长期处于一定的压力下运行状态;
4. 配置元件(Config Element)
A. CSV数据文件设置:主要用于读取CSV格式的文件中数据,实现参数化;
B. HTTP信息头管理器:配置HTTP发送请求的请求头内容;
C. 用户定义的变量;
5. 监听器(Listener)
A. 监听器是用来查看、保存和读取已保存的测试结果情况,默认情况下结果被保存为".jtl"格式的文件,内容还是以xml形式存在;
B. 查看结果树:查看请求结果,绿色的代表测试通过,红色的代表失败,还可以查看请求和响应数据;
C. 聚合报告:统计响应信息,如请求数、平均值、错误率和吞吐量等;
D. 用表格查看结果;
E. 响应时间图;
三、JMeter进阶
1. 参数化
A. 参数化是指根据需求动态获取数据并进行赋值,通过${变量名}来获取参数值;
B. 使用场景:用户定义的变量在HTTP请求中使用、动态地读取登录CSV文件中用户名和密码进行迭代;
2. 关联
A. 关联是指将请求之间通过传递参数来建立联系;
B. 关联方式:正则表达式提取器;
3. 监控服务器性能
A. 目的是用来监控服务器内存、CPU等性能参数,通过安装插件来实现;
可参考:Jmeter性能测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗