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

如何解决GCP上的WebSocket连接错误(错误码1006)

WebSocket错误码1006断开连接排查方案(Spring Boot 3.x + Java 17 + GCP环境)

针对生产环境遇到的WebSocket错误码1006断开问题,在排除防火墙限制的前提下,可从以下方向逐一排查:

  • 补全心跳机制
    GCP环境下的负载均衡、中间件常会因连接长时间无数据传输触发空闲断开。给Spring Boot WebSocket配置心跳,维持连接活跃:

    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
        @Override
        public void configureMessageBroker(MessageBrokerRegistry config) {
            config.enableSimpleBroker("/topic")
                  .setHeartbeatValue(new long[]{10000, 10000}); // 10秒发送心跳请求,10秒未收响应则判定断开
            config.setApplicationDestinationPrefixes("/app");
        }
    }
    
  • 调整GCP负载均衡超时
    GCP HTTP(S)负载均衡默认30秒空闲超时,超时后LB会主动切断WebSocket连接。进入GCP控制台修改后端服务的超时时间(建议设为300秒以上),同时启用HTTP keep-alive配置。

  • 检查实例/容器资源状态
    查看GCE实例或K8s Pod的CPU、内存使用率,若资源不足,JVM可能强制终止WebSocket连接。通过GCP监控面板确认是否存在资源占用峰值。

  • 排查Spring Boot配置异常
    检查自定义的HandshakeInterceptor或ChannelInterceptor是否抛出未捕获异常,导致连接中断;同时确认WebSocket端点配置正确,无权限拦截逻辑误判。

  • 解决MTU分片问题
    GCP网络默认MTU为1460,若WebSocket消息过大超过该值,可能引发分片失败导致断开。可限制消息大小:

    @Override
    public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
        registration.setMessageSizeLimit(64 * 1024); // 限制单条消息最大64KB
        registration.setSendBufferSizeLimit(128 * 1024);
    }
    
  • 开启DEBUG日志定位细节
    启用Spring Boot WebSocket相关DEBUG日志,获取连接、传输、断开的完整链路信息:

    logging.level.org.springframework.web.socket=DEBUG
    logging.level.org.springframework.messaging=DEBUG
    

    结合现有GCP日志(仅显示1006错误码无额外信息),通过DEBUG日志可区分是客户端主动断开还是服务端触发的连接终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:17:06