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

如何修改gRPC的GRPC_ARG_HTTP2_MAX_PING_STRIKES参数解决连接报错

修改gRPC的GRPC_ARG_HTTP2_MAX_PING_STRIKES参数解决GOAWAY连接关闭问题

要修改GRPC_ARG_HTTP2_MAX_PING_STRIKES参数,需要在客户端和服务端的gRPC配置中通过withOption方法显式设置该参数值为0。以下是针对你现有Kotlin配置的修改方案:

客户端配置修改

在NettyChannelBuilder中添加参数配置:

import io.grpc.internal.GrpcUtil.GRPC_ARG_HTTP2_MAX_PING_STRIKES
import java.util.concurrent.TimeUnit.SECONDS

@Bean
fun keepAliveClientConfigurer(): GrpcChannelConfigurer {
    return GrpcChannelConfigurer { channelBuilder, _ ->
        if (channelBuilder is io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder) {
            channelBuilder
                .keepAliveTime(30, SECONDS)
                .keepAliveTimeout(5, SECONDS)
                // 设置最大ping触发次数为0,关闭ping次数限制
                .withOption(GRPC_ARG_HTTP2_MAX_PING_STRIKES, 0)
        }
    }
}

服务端配置修改

同样在NettyServerBuilder中添加参数配置:

import io.grpc.internal.GrpcUtil.GRPC_ARG_HTTP2_MAX_PING_STRIKES
import java.util.concurrent.TimeUnit

@Bean
fun keepAliveServerConfigurer(): GrpcServerConfigurer? {
    return GrpcServerConfigurer { serverBuilder: ServerBuilder<*> ->
        if (serverBuilder is NettyServerBuilder) {
            serverBuilder
                .permitKeepAliveTime(0, TimeUnit.NANOSECONDS)
                .permitKeepAliveWithoutCalls(true)
                // 设置最大ping触发次数为0,关闭ping次数限制
                .withOption(GRPC_ARG_HTTP2_MAX_PING_STRIKES, 0)
        }
    }
}

参数说明

  • GRPC_ARG_HTTP2_MAX_PING_STRIKES默认值为2,代表当服务端收到超过允许频率的ping请求时,累计到2次就会触发GOAWAY关闭连接(属于gRPC的DDOS防护机制)。
  • 将值设为0后,服务端会关闭该ping次数限制,不会因为ping请求过多触发ENHANCE_YOUR_CALM类型的GOAWAY错误,匹配你压测场景下的需求。

内容的提问来源于stack exchange,提问作者Eduardo José

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:17:14