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

WSO2 EI 6.4.0推送JSON payload至AWS SQS Queue时出现Target Connection is Stale间歇性错误的解决咨询

解决WSO2 EI 6.4.0推送AWS SQS时的"Target Connection is stale"异常

我来帮你梳理下这个问题的解决思路,你遇到的这个间歇性连接异常在WSO2 EI与AWS SQS集成的场景里并不少见,结合你的日志和配置需求给你具体建议:

首先看你提供的异常日志:

[2022-08-27 03:08:49,801] [-1] [] [HTTPS-Sender I/O dispatcher-5] WARN {org.apache.synapse.transport.passthru.TargetHandler} - Connection closed by target host while sending the request Remote Address : proxy.abc.com/ 10.0.x.x:3090
[2022-08-27 03:08:49,801] [-1234] [] [PassThroughMessageProcessor-29] ERROR {org.apache.synapse.transport.passthru.PassThroughHttpSSLSender} - IO while building message java.io.IOException: Target Connection is stale.

这个异常的核心原因是:WSO2 EI的HTTP客户端复用了已经被目标端(这里是你的代理服务器proxy.abc.com)关闭的闲置连接,导致发送请求时发现连接已失效。

关于http.connection.stalecheck的配置

你提到的官方文档思路是对的,但要注意参数的实际作用:

  • http.connection.stalecheck=1是启用连接复用前的 stale 检查,而非禁用。默认情况下这个值通常是0(不检查),所以客户端会直接复用连接,直到发送请求时才发现连接已被后端关闭,从而抛出异常。
  • 所以正确的操作是将<ESB_Home>/repository/conf/nhttp.properties中的http.connection.stalecheck设置为1,这样每次复用连接前,客户端会先检查连接是否有效,避免使用已失效的连接。

具体操作步骤

  • 打开WSO2 EI安装目录下的<ESB_Home>/repository/conf/nhttp.properties文件
  • 查找http.connection.stalecheck配置项,如果文件中没有该条目,手动添加一行:
    http.connection.stalecheck=1
    
  • 重启WSO2 EI服务,让配置生效

额外优化建议

除了开启stale检查,你还可以调整以下配置来进一步避免这类问题:

  • 调整连接超时参数:在nhttp.properties中设置合理的连接超时和socket超时,比如:
    http.connection.timeout=30000
    http.socket.timeout=30000
    
    (单位为毫秒,30000即30秒,可根据你的业务响应时间调整)
  • 协调代理服务器的超时设置:日志中显示请求经过了proxy.abc.com,这个代理可能有自己的连接闲置超时规则。如果代理的闲置超时时间比WSO2 EI连接池的闲置时间短,就会出现代理主动关闭连接但客户端还在复用的情况,需要协调调整两边的超时时间匹配。
  • 优化连接池闲置回收:可以设置http.connection.max.idle.time参数,自动回收闲置过久的连接,比如:
    http.connection.max.idle.time=60000
    
    这样闲置1分钟的连接会被主动关闭,避免被后端/代理提前关闭。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:07:31