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

Tinkoff Gatling JDBC插件开启TRACE日志后响应时间过高,如何正确配置?

问题描述

使用Gatling的Tinkoff JDBC插件时,开启TRACE级别日志后响应时间大幅上升,从原本的1500ms增至25秒。

当前Logback配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
        </encoder>
        <immediateFlush>false</immediateFlush>
    </appender>

    <!-- uncomment and set to DEBUG to log all failing HTTP requests -->
    <!-- uncomment and set to TRACE to log all HTTP requests -->
    <logger name="io.gatling.http.engine.response" level="TRACE" />
    <!-- uncomment to log WebSocket events -->
    <!-- <logger name="io.gatling.http.action.ws.fsm" level="TRACE" /> -->

    <!-- uncomment to log SSE events -->
    <!-- <logger name="io.gatling.http.action.sse.fsm" level="TRACE" /> -->
    <!-- <root level="TRACE"> -->
    <root level="TRACE">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

数据库连接代码

object Actions_test {

    // database connection
    val database_URL: JdbcProtocolBuilder = DB
            .url("mariadb")
            .username("user")
            .password("pw@2024")
            .maximumPoolSize(10)
            .connectionTimeout(10.second)

    // large query
    def callingJDBC(): QueryActionBuilder = 
      jdbc("simple Call")
        .query("""your-large-query-here
               """.stripMargin)
        .check(simpleCheck(x => x.length > 2000)
      )        
}

场景代码

class DebugTest extends Simulation {

  val scn = scenario("test")
    .exec(Actions_test.callingJDBC())
    .exitHere

  setUp(
    scn.inject(
      rampUsers(1000).during(500)
    ),
  )
  .protocols(Actions_test.database_URL)
  .maxDuration(10.minute)

}
问题原因

你的Logback配置中根日志级别被设置为TRACE,这会强制所有组件(包括Tinkoff JDBC插件)输出最详尽的日志信息。对于返回大量数据的JDBC查询来说,TRACE级别会记录结果集的每一行数据、SQL执行的所有细节,产生巨量的日志输出,导致IO资源被占满,直接拖慢测试的响应速度。

解决方案

1. 调整全局日志级别,精准开启调试模块

将根日志级别恢复为INFO(日常测试的合理级别),仅保留需要调试的特定模块(比如Gatling HTTP响应)的TRACE级别。修改后的Logback配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
        </encoder>
        <immediateFlush>false</immediateFlush>
    </appender>

    <!-- 仅给需要调试的HTTP模块开启TRACE -->
    <logger name="io.gatling.http.engine.response" level="TRACE" />

    <!-- 根日志恢复为INFO级别,避免全局大量日志输出 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

2. 按需调试JDBC插件

如果需要排查JDBC相关问题,不要直接用TRACE级别,而是临时给Tinkoff JDBC插件的日志包开启DEBUG级别(足够定位多数问题,且日志量远小于TRACE),添加如下配置到Logback中:

<!-- 仅在排查JDBC问题时临时开启 -->
<logger name="ru.tinkoff.gatling.jdbc" level="DEBUG" />

调试完成后记得改回INFO或直接注释掉该配置,避免影响测试性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:57:22