查看“JMeter”的源代码
←
JMeter
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://jmeter.apache.org/ === 不要使用 GUI 模式进行负载测试! === 仅在测试创建和调试阶段使用 GUI 模式。 负载测试应使用 CLI 模式(非 GUI 模式),命令格式如下:<syntaxhighlight lang="powershell"> jmeter -n -t [测试脚本.jmx] -l [结果文件.jtl] -e -o [网页报告输出路径] </syntaxhighlight> 例:<syntaxhighlight lang="console"> K:\record\2019\8\8\apache-jmeter-5.1.1\bin\jmeter -n -t K:\record\2025\07\10\test_jmeter.jmx -l K:\record\2025\07\10\结果文件.jtl -e -o K:\record\2025\07\10\report.html </syntaxhighlight> === 建议根据测试需求调整 Java 堆内存大小 === 修改 JMeter 批处理文件(<code>jmeter.bat</code>或<code>jmeter.sh</code>)中的环境变量:<syntaxhighlight lang="console"> HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" </syntaxhighlight> === JSR223 PreProcessor 前置处理器 === JSR223 PreProcessor 是 JMeter 中更高效的前置处理器<syntaxhighlight lang="console"> // 获取 JMeter 变量 def fileDir = vars.get("fileDir") // 文件路径变量 def filePath = fileDir + "/data.txt" // 读取文件内容 def fileContent = new File(filePath).text // 保存到 JMeter 变量 vars.put("fileData", fileContent) </syntaxhighlight> === 日志 === JSR223 提供了内置的 <code>log</code> 对象,支持不同级别的日志输出。日志会记录到 JMeter 的日志文件(<code>jmeter.log</code>)中。<syntaxhighlight lang="console"> log.debug("这是调试信息,仅在调试模式显示") log.info("这是普通信息") log.warn("这是警告信息") log.error("这是错误信息") </syntaxhighlight>JMeter 默认会在 启动目录 生成 <code>jmeter.log</code>,但需要确保: 1.日志级别正确: 编辑 JMeter 安装目录下的 <code>jmeter.properties</code> 文件,确保以下配置未被注释且级别为 <code>INFO</code> 或更低:<syntaxhighlight lang="console"> # 取消注释并设置为 INFO 或 DEBUG log_level.jmeter=INFO log_level.jmeter.util=INFO </syntaxhighlight>2.日志文件路径未被修改: 确认 <code>jmeter.properties</code> 中没有自定义日志路径(搜索 <code>log_file</code> 字段,确保其被注释或指向正确路径):<syntaxhighlight lang="console"> #log_file=jmeter.log # 默认注释状态,使用启动目录 </syntaxhighlight> === Groovy 读文件 === 1.读取文本文件为字符串:<syntaxhighlight lang="console"> // 获取 JMeter 变量 def fileDir = vars.get("fileDir") // 文件路径变量 def filePath = fileDir + "/data.txt" // 读取文件内容 def fileContent = new File(filePath).text // 保存到 JMeter 变量 vars.put("fileData", fileContent) </syntaxhighlight>2.逐行读取文件(适用于大文件):<syntaxhighlight lang="console"> def filePath = "/path/to/large_file.csv" def lines = [] new File(filePath).eachLine { line -> lines.add(line) // 可添加条件中断读取 if (lines.size() >= 100) return false } vars.put("first100Lines", lines.join("\n")) </syntaxhighlight> === 前置处理器和后置处理器的执行顺序 === 按取样器从上到下的顺序,父级组件>同级组件>子级组件 [[文件:Jmeter中处理器的执行顺序.png]] jmeter接口测试其实就是取样器的执行过程,只不过通过不同的辅助元件产生不同特殊效果。 === 配置Jmeter日志 === %jmeter_home%\bin\log4j2.xml<syntaxhighlight lang="xml"> <File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false"> <PatternLayout> <pattern>[%d] [%p] [%t] [%c{1.}]: %m%n</pattern> </PatternLayout> </File> </syntaxhighlight>默认没有 %t 输出线程ID,也没有"[]",日志不易读 === 执行命令和记录日志 === <syntaxhighlight lang="bat"> E:\record\2025\07\23>K:\record\2019\8\8\apache-jmeter-5.1.1\bin\jmeter -n -t "E:\record\2025\07\22\HTTP Request.jmx" -l "E:\record\2025\07\23\result.jtl" -f </syntaxhighlight>默认在哪执行命令,日志就输出在哪个路径里了,像上面这个命令日志就输出到 <code>E:\record\2025\07\23</code> 这个目录下面了 === 用 JSR 223 后置处理器 log 响应内容 === <syntaxhighlight lang="groovy"> // 获取响应内容(字符串格式) String responseBody = prev.getResponseDataAsString() // 打印完整响应内容到日志 log.info("响应内容:" + responseBody) </syntaxhighlight> === 用 JSR 223 前置处理器 log 请求内容 === <syntaxhighlight lang="groovy"> // 获取请求 URL String url = sampler.getUrl().toString() log.info("请求 URL:" + url) // 获取请求方法(GET/POST 等) String method = sampler.getMethod() log.info("请求方法:" + method) // 获取请求参数(适用于 GET 或 POST 表单参数) def params = sampler.getArguments() if (params != null && params.size() > 0) { StringBuilder paramStr = new StringBuilder() params.each { arg -> paramStr.append(arg.getName()).append("=").append(arg.getValue()).append("&") } log.info("请求参数:" + paramStr.toString().replaceAll("&$", "")) // 去除末尾多余的& } // 获取请求体(适用于 POST 等带 body 的请求,如 JSON/XML) String requestBody = sampler.getArguments().getArgument(0)?.getValue() if (requestBody) { log.info("请求体:" + requestBody) } </syntaxhighlight> *
返回至
JMeter
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息