Gatling本地运行预热完成后延迟90秒启动问题排查
解决Gatling仿真预热完成后90秒延迟启动的问题
嘿,我之前也碰到过类似的情况!结合你贴的日志和pom配置来看,这个90秒的延迟大概率是由JVM DNS解析超时或者Gatling老版本的初始化逻辑bug导致的,给你整理几个靠谱的排查和解决方向:
1. 先排查JVM DNS解析的问题
Gatling在正式启动前,HTTP客户端会做一些网络初始化操作,要是本地DNS配置有问题,很容易触发默认的90秒超时。你可以在IntelliJ的Run Configuration里给VM options加几个参数试试:
-Dsun.net.inetaddr.ttl=30 -Djava.net.preferIPv4Stack=true -Ddns.server=8.8.8.8
这些参数会强制JVM使用本地DNS缓存、优先IPv4,并且指定可靠的公共DNS服务器,能快速排查是不是DNS的锅。
2. 升级Gatling插件版本(重点!)
你用的是Gatling Maven插件3.0.1版本,这个版本属于比较早期的3.x版本,存在一些初始化阶段的网络检测bug,比如HTTP/2自动检测时的超时问题(你的日志里也显示HTTP/2 disabled,说明这个检测过程可能耗了不少时间)。直接升级到最新的稳定版就能解决大部分这类老bug:
<plugin> <groupId>io.gatling</groupId> <artifactId>gatling-maven-plugin</artifactId> <version>3.9.5</version> <!-- 可以替换为Gatling官网最新稳定版 --> <executions> <execution> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin>
3. 检查仿真代码里的启动延迟配置
看看你的仿真代码,有没有不小心给场景加了全局启动延迟?比如误写了nothingFor(90 seconds):
setUp( myScenario.inject( nothingFor(90 seconds), // 要是有这个配置,直接删掉或者改短时间 atOnceUsers(1) ) )
这种低级错误有时候也会导致看起来像系统延迟的问题,先排查代码最省心。
4. 排除本地代理的影响
如果你本地开了代理服务器,Gatling的HTTP客户端可能在尝试连接代理时卡住超时。可以在src/test/resources/gatling.conf里(没有的话就新建一个)禁用代理:
http { proxy { enabled = false } }
或者直接在VM参数里清空代理配置:
-Dhttp.proxyHost= -Dhttp.proxyPort= -Dhttps.proxyHost= -Dhttps.proxyPort=
内容的提问来源于stack exchange,提问作者Tech Newbie
相关产品推荐
相关产品推荐

