aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2025-11-28 11:47:24 -0800
committerGitHub <noreply@github.com>2025-11-28 11:47:24 -0800
commit03ce060e854798437674b539d34afb8caaaf77fb (patch)
tree464751f3f4f2e19b9eacd5276efbd6834edb4c10
parent626954b76c33b5d3f62a84a44537324d569fa9dd (diff)
downloadseaweedfs-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.java8
-rw-r--r--weed/pb/grpc_client_server.go14
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 {