JMeter使用小记
# JMeter 使用小记
# 设置中文界面
JMeter 安装打开后默认语言是英文,修改为中文的方法也很简单,目前笔者发现了 3 种修改语言的方法,如下文。
# 方法1
——修改 Options 依次点击 Options-->Choose Language-->Chinese(Simplified) 即可配置成中文简体,需注意的是该方法只对当次生效,下次打开 Jmeter 依然是英文。如需永久生效,请使用下面两种方法。
# 方法2
——修改 jmeter.properties 文件
- 打开 jmeter 解压缩文件下的 bin 目录,找到 jmeter.properties 文件并用编辑器打开,
- 在
#Preferred GUI language
下面插入一行language=zh_CN
,修改后保存(如果有language=en
需要注释掉) - 重新启动 Jmeter 界面显示为中文简体
# 方法3
——修改 jmeter.bat 文件
- 使用编辑器打开 JMeter 启动文件 jmeter.bat
- 将
set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
修改成set JMETER_LANGUAGE=-Duser.language="zh" -Duser.region="CN"
,保存代码 - 重新启动 Jmeter 界面显示为中文简体
# 设置使用中文
修改默认编码
# The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
2
修改成 UTF-8
并放开注释:
# The encoding to be used if none is provided (default ISO-8859-1)
sampleresult.default.encoding=UTF-8
2
# 提取并设置全局变量
- 需要添加【后置处理器】:JSON 提取器、调试后置处理程序、BeanShell 后置处理程序,进行参数变量的提取。
- 需要添加【配置元件】:HTTP 信息头处理器,进行变量的传递。
- 其中用到的表达式可用 Jmeter 工具自动生成。(函数助手)
需要用到的工具:
1、JSON 提取器
2、BeanShell 后置处理程序
函数助手的使用:
1、提取全局变量
2、使用全局变量
# 线程组的串行与并行执行
勾选【测试计划】界面中的以下这个按钮,则为【串行】否则为【并行】。
# 聚合报告相关信息
聚合报告(Aggregate Report)是 JMeter 中一个非常重要的监听器,用于展示性能测试结果的统计信息。
以下是对聚合报告的一些关键点的解释:
生成方式:聚合报告可以通过两种方式生成,一种是从已有的
.jtl
文件加载生成报告,另一种是在运行 JMeter 时动态生成聚合报告。数据来源:聚合报告的数据来源于 SampleResult,每一行代表一个请求,同名请求的结果会合并显示。
界面介绍:聚合报告界面提供了多个指标,包括【Label(请求名称)、#Samples(样本数,即请求数量)、Average(平均响应时间)、Median(中位数)、90% Line、95% Line、99% Line(这些指标表示响应时间的百分位数)、Min(最小响应时间)、Max(最大响应时间)、Error%(错误率)、Throughput(吞吐量,每秒完成的请求数)以及数据传输速率(KB/sec)】。
关键指标:在分析聚合报告时,需要特别关注异常%、吞吐量、最大TPS和最大并发数等指标。异常%表示错误请求的比例,吞吐量反映了服务器的处理能力,最大TPS和最大并发数有助于确定系统的性能瓶颈。
结果分析:聚合报告提供了详尽的数据,帮助我们全面了解系统在不同负载下的表现,找到性能瓶颈,并制定相应的优化方案。
注意事项:在使用聚合报告时,注意不要在测试计划中使用相同的请求取样器名称,因为聚合报告是累加的,即每次运行的结果统计都是基于前一次运行的结果进行统计。
百分位数:聚合报告中的百分位数(如90% Line、95% Line、99% Line)表示相应百分比的请求响应时间不会超过该值,这有助于我们了解响应时间的分布情况。
图形结果:JMeter 的“图形结果”(Graph Results)监听器可以以图形形式展示响应时间随时间的变化趋势,帮助我们发现哪些请求响应时间较长。
# 测试小记
# 基础概念
- 并发量:指在同一时间点内,系统中同时处理的用户请求数(是个相对的值,不是绝对值)
- 响应时间:指系统处理一个请求所需的时间
- 吞吐量:是指系统在给定时间内处理的业务请求数量
- QPS (Queries Per Second):表示系统每秒钟处理的请求数量
- TPS(Transactions Per Second):表示系统每秒钟完成的事务数量(实际就是吞吐量)
# QPS 和吞吐量的区别?
QPS(Queries Per Second)和吞吐量(Throughput)都是衡量系统性能的指标,但它们的含义和计算方式有所不同。
- QPS(Queries Per Second):QPS 是指每秒钟系统能够处理的请求数量,通常用于衡量系统的并发处理能力。在 Web 应用中,QPS 表示每秒钟能够处理的 HTTP 请求次数。QPS 越高,系统的并发处理能力越强,能够同时处理更多的请求。
- 吞吐量(Throughput):吞吐量是指在一定时间内系统实际处理的任务量或数据量。在计算机领域,吞吐量通常表示每秒钟系统能够处理的数据量或事务量。吞吐量越高,表示系统能够在单位时间内处理更多的任务或数据。
# 测试方向
- 测试接口的性能,通过【聚合报告】查看相关信息
- 通过修改服务器的【jvm参数】来检测内存大小对接口性能的影响,查看是否会有【内存泄漏】的现象
- jvm 参数示例:
-Xms2048m -Xmx2048m
,-Xms128m -Xmx128m
- jvm 参数示例:
# 最高并发数探测方法
- 增加线程数,指到出现异常
- 增加线程数,直到平均响应时间超过预期的值(依项目而定,比如买票最多让用户等待 2 秒)
# JVM 参数解释
-Xms
:设置JVM启动时的初始内存大小。例如,-Xms2048m
表示初始内存大小为2048兆字节(MB)。-Xmx
:设置JVM最大可用内存大小。例如,-Xmx2048m
表示最大内存限制为2048MB。
# 内存泄漏(Memory Leak)
内存泄漏是指在计算机程序中因为疏忽或错误导致的一种内存分配问题。当一个程序的可执行文件在运行时分配了内存给某个变量或对象,但在释放这个内存之前失去了对这块内存的引用,就会发生内存泄漏。简单来说,内存泄漏就是指程序在申请内存后,无法释放已经申请的内存空间。
# 内存泄漏的影响
- 性能下降:随着时间的推移,内存泄漏可能导致应用程序消耗越来越多的内存,从而降低性能。
- 响应延迟:内存泄漏可能导致垃圾回收器频繁运行,增加系统的响应延迟。
- 服务中断:在极端情况下,内存泄漏可能导致应用程序或系统耗尽所有可用内存,从而引发服务中断或崩溃。
# 如何检测内存泄漏
- 监控工具:使用内存监控工具(如 Java 的 VisualVM、MAT 等)来观察内存使用情况。
- 性能测试:在不同的 JVM 参数设置下进行压力测试和性能测试,观察内存使用模式。
- 日志分析:分析应用程序日志,检查是否有异常或错误可能与内存泄漏相关。
- 代码审查:审查代码,特别是那些管理资源分配和释放的部分,确保没有逻辑错误。
# 调整 JVM 参数的目的
- 性能评估:评估不同内存设置对应用程序性能的影响。
- 资源优化:找到最优的内存配置,以提高应用程序的响应速度和吞吐量。
- 稳定性测试:测试在高负载情况下应用程序的稳定性和内存管理。