diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-11-28 11:47:24 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-28 11:47:24 -0800 |
| commit | 03ce060e854798437674b539d34afb8caaaf77fb (patch) | |
| tree | 464751f3f4f2e19b9eacd5276efbd6834edb4c10 | |
| parent | 626954b76c33b5d3f62a84a44537324d569fa9dd (diff) | |
| download | seaweedfs-03ce060e854798437674b539d34afb8caaaf77fb.tar.xz seaweedfs-03ce060e854798437674b539d34afb8caaaf77fb.zip | |
fix too many pings (#7566)
* fix too many pings
* constants
* Update weed/pb/grpc_client_server.go
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
| -rw-r--r-- | other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java | 8 | ||||
| -rw-r--r-- | weed/pb/grpc_client_server.go | 14 |
2 files changed, 15 insertions, 7 deletions
diff --git a/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java b/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java index 320a754ea..f8334b734 100644 --- a/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java +++ b/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java @@ -22,6 +22,10 @@ public class FilerGrpcClient { private static final SslContext sslContext; private static final String protocol; + // gRPC keepalive settings - must be consistent with server-side settings in grpc_client_server.go + private static final long KEEP_ALIVE_TIME_SECONDS = 60L; + private static final long KEEP_ALIVE_TIMEOUT_SECONDS = 20L; + static { sslContext = FilerSecurityContext.getGrpcSslContext(); protocol = FilerSecurityContext.isHttpSecurityEnabled() ? "https" : "http"; @@ -81,8 +85,8 @@ public class FilerGrpcClient { .flowControlWindow(16 * 1024 * 1024) .initialFlowControlWindow(16 * 1024 * 1024) .maxHeaderListSize(16 * 1024 * 1024) - .keepAliveTime(30, TimeUnit.SECONDS) - .keepAliveTimeout(10, TimeUnit.SECONDS) + .keepAliveTime(KEEP_ALIVE_TIME_SECONDS, TimeUnit.SECONDS) + .keepAliveTimeout(KEEP_ALIVE_TIMEOUT_SECONDS, TimeUnit.SECONDS) .keepAliveWithoutCalls(true) .withOption(io.grpc.netty.shaded.io.netty.channel.ChannelOption.SO_RCVBUF, 16 * 1024 * 1024) .withOption(io.grpc.netty.shaded.io.netty.channel.ChannelOption.SO_SNDBUF, 16 * 1024 * 1024); diff --git a/weed/pb/grpc_client_server.go b/weed/pb/grpc_client_server.go index 9caf1f511..8460d5949 100644 --- a/weed/pb/grpc_client_server.go +++ b/weed/pb/grpc_client_server.go @@ -29,6 +29,10 @@ import ( const ( Max_Message_Size = 1 << 30 // 1 GB + + // gRPC keepalive settings - must be consistent between client and server + GrpcKeepAliveTime = 60 * time.Second // ping interval when no activity + GrpcKeepAliveTimeout = 20 * time.Second // ping timeout ) var ( @@ -52,12 +56,12 @@ func NewGrpcServer(opts ...grpc.ServerOption) *grpc.Server { var options []grpc.ServerOption options = append(options, grpc.KeepaliveParams(keepalive.ServerParameters{ - Time: 30 * time.Second, // wait time before ping if no activity (match client) - Timeout: 20 * time.Second, // ping timeout + Time: GrpcKeepAliveTime, // server pings client if no activity for this long + Timeout: GrpcKeepAliveTimeout, // ping timeout // MaxConnectionAge: 10 * time.Hour, }), grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ - MinTime: 30 * time.Second, // min time a client should wait before sending a ping (match client) + MinTime: GrpcKeepAliveTime, // min time a client should wait before sending a ping PermitWithoutStream: true, }), grpc.MaxRecvMsgSize(Max_Message_Size), @@ -89,8 +93,8 @@ func GrpcDial(ctx context.Context, address string, waitForReady bool, opts ...gr grpc.WaitForReady(waitForReady), ), grpc.WithKeepaliveParams(keepalive.ClientParameters{ - Time: 30 * time.Second, // client ping server if no activity for this long - Timeout: 20 * time.Second, + Time: GrpcKeepAliveTime, // client ping server if no activity for this long + Timeout: GrpcKeepAliveTimeout, // ping timeout PermitWithoutStream: true, })) for _, opt := range opts { |
