You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jenkins运行JMeter负载测试时保存失败响应事务ID的方案

长时长JMeter负载测试失败事务ID捕获方案

一、JMeter侧核心配置

  • 首先统一事务标识规则:要么所有请求嵌套在事务控制器下,控制器名称和业务约定的事务ID一一对应;要么确保所有请求的响应/请求参数中包含固定字段txn_id存储业务事务ID
  • 为所有待检测请求/事务添加响应断言,覆盖所有失败判定规则:比如响应码非2xx、响应体包含错误关键字、请求超时等
  • 添加JSR223后置处理器(推荐选Groovy引擎,性能远高于BeanShell,不会影响长测的负载准确性)到请求/事务的子层级,写入如下逻辑,单独记录失败的事务ID:
if (!prev.isSuccessful()) {
    // 从响应体提取事务ID,根据实际返回结构调整正则
    String txnId = prev.getResponseDataAsString().replaceAll(".*\"txn_id\":\"([^\"]+)\".*", "\$1")
    // 如果事务ID在请求参数中,替换为下行逻辑
    // String txnId = prev.getQueryString().replaceAll(".*txn_id=([^&]+).*", "\$1")
    
    // 追加写入失败ID文件
    FileWriter fw = new FileWriter("failed_txn_ids.txt", true)
    fw.write(txnId + "," + prev.getSampleLabel() + "," + prev.getStartTime() + "\n")
    fw.close()
}
  • 优化JMeter存储配置,避免2小时测试生成过大的日志文件:修改JMeter目录下bin/user.properties,添加如下配置,关闭非必要的全量响应存储:
jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.response_data=false
jmeter.save.saveservice.samplerData=false
jmeter.save.saveservice.responseHeaders=false

二、Jenkins流水线配置

  • 测试执行前先清理历史失败ID文件,避免旧数据干扰:
rm -f failed_txn_ids.txt unique_failed_txn_ids.txt
  • 用非GUI模式启动JMeter测试,降低性能开销:
jmeter -n -t your_test_plan.jmx -l test_result.jtl -e -o ./jmeter_report
  • 测试执行完成后处理结果:
    • 对失败ID文件去重,避免同一个失败事务重复上报:sort -u failed_txn_ids.txt > unique_failed_txn_ids.txt
    • 配置通知规则:将去重后的失败ID文件作为附件,通过邮件/内部IM工具同步给开发,通知正文中可追加失败事务总数、测试运行环境、并发量等上下文信息
    • 按构建号归档本次测试的unique_failed_txn_ids.txt、test_result.jtl和性能报告,方便后续问题回溯

三、高并发场景优化

如果测试并发量超过1000,多线程同时写单个文件可能出现冲突,可改用变量写入JTL的方案:

  • 在user.properties中添加配置sample_variables=txn_id,将事务ID设置为JMeter采样结果的自定义变量
  • 在JSR223前置处理器中提前把txn_id赋值为对应变量值
  • 测试结束后直接从JTL结果中过滤失败记录提取ID:
awk -F ',' '$8 == "false" {print $NF}' test_result.jtl | sort -u > unique_failed_txn_ids.txt

这种方式没有多线程写文件冲突问题,性能损耗更低,更适合长时间高并发的负载测试。

内容的提问来源于stack exchange,提问作者user14625441

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:45:02