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

遇到j.i.IOException: Premature close错误,求排查解决(附Gatling代码)

错误原因排查与解决方法

可能的原因

  • 代理协议不匹配:目标地址是HTTP协议,但配置的代理端口为443(通常是HTTPS代理端口),代理服务器可能拒绝转发HTTP请求,导致连接被提前关闭。
  • 响应体读取时机错误:在独立的exec步骤中直接打印响应体,Gatling的异步处理机制可能已经关闭了响应流,触发Premature close。
  • 代理未配置认证:如果代理服务器需要身份验证,未提供凭证会导致服务器主动断开连接。

对应的解决方法

1. 修正代理配置

确认代理服务器支持的协议和端口,调整配置:

  • 如果代理同时支持HTTP和HTTPS,明确指定对应端口:
Proxy proxy = new Proxy("m1-resolver.hsenidmobile.com", 8080); // HTTP代理端口
proxy.setHttpsPort(443); // HTTPS代理端口
HttpProtocolBuilder httpProtocol = http.baseUrl("http://atominik.com").proxy(proxy);
  • 如果目标网站支持HTTPS,将baseUrl改为https://atominik.com,适配代理的443端口。

2. 调整响应体处理方式

避免在独立exec步骤中读取响应体,改为在check阶段直接处理:

.exec(http("Proxy Request")
        .get("/")
        .check(status().is(200))
        .check(bodyString().transform(body -> {
            // 用Gatling日志API打印,而非System.out
            org.slf4j.LoggerFactory.getLogger(getClass()).info(body);
            return body;
        }).saveAs("responseBody"))
)

3. 添加代理认证(如果需要)

如果代理要求用户名密码,补充凭证配置:

HttpProtocolBuilder httpProtocol = http.baseUrl("http://atominik.com")
    .proxy(new Proxy("m1-resolver.hsenidmobile.com", 443)
        .credentials("your-username", "your-password"));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:31:21