From 10936f8e8b87f5681eae2187aeffed6fb5b80774 Mon Sep 17 00:00:00 2001 From: Nikolay Nikolaev Date: Fri, 19 Feb 2021 10:43:17 +0200 Subject: [PATCH] chore(kuma-cp) set GRPC keepalives (#1580) Signed-off-by: Nikolay Nikolaev Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- pkg/dp-server/server/server.go | 16 +++++++++++++++- pkg/kds/mux/server.go | 16 +++++++++++++++- pkg/mads/server/grpc.go | 16 +++++++++++++++- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/pkg/dp-server/server/server.go b/pkg/dp-server/server/server.go index 66bc2c6e6a83..b381f6a90bb2 100644 --- a/pkg/dp-server/server/server.go +++ b/pkg/dp-server/server/server.go @@ -5,6 +5,9 @@ import ( "fmt" "net/http" "strings" + "time" + + "google.golang.org/grpc/keepalive" http_prometheus "github.com/slok/go-http-metrics/metrics/prometheus" "github.com/slok/go-http-metrics/middleware" @@ -19,7 +22,10 @@ import ( var log = core.Log.WithName("dp-server") -const grpcMaxConcurrentStreams = 1000000 +const ( + grpcMaxConcurrentStreams = 1000000 + grpcKeepAliveTime = 15 * time.Second +) type DpServer struct { config dp_server.DpServerConfig @@ -33,6 +39,14 @@ var _ component.Component = &DpServer{} func NewDpServer(config dp_server.DpServerConfig, metrics metrics.Metrics) *DpServer { grpcOptions := []grpc.ServerOption{ grpc.MaxConcurrentStreams(grpcMaxConcurrentStreams), + grpc.KeepaliveParams(keepalive.ServerParameters{ + Time: grpcKeepAliveTime, + Timeout: grpcKeepAliveTime, + }), + grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ + MinTime: grpcKeepAliveTime, + PermitWithoutStream: true, + }), } grpcOptions = append(grpcOptions, metrics.GRPCServerInterceptors()...) grpcServer := grpc.NewServer(grpcOptions...) diff --git a/pkg/kds/mux/server.go b/pkg/kds/mux/server.go index acc331e6bb05..34d4b72f9b28 100644 --- a/pkg/kds/mux/server.go +++ b/pkg/kds/mux/server.go @@ -3,6 +3,9 @@ package mux import ( "fmt" "net" + "time" + + "google.golang.org/grpc/keepalive" "github.com/pkg/errors" "google.golang.org/grpc" @@ -16,7 +19,10 @@ import ( core_metrics "github.com/kumahq/kuma/pkg/metrics" ) -const grpcMaxConcurrentStreams = 1000000 +const ( + grpcMaxConcurrentStreams = 1000000 + grpcKeepAliveTime = 15 * time.Second +) var ( muxServerLog = core.Log.WithName("mux-server") @@ -52,6 +58,14 @@ func NewServer(callbacks []Callbacks, config multizone.KdsServerConfig, metrics func (s *server) Start(stop <-chan struct{}) error { grpcOptions := []grpc.ServerOption{ grpc.MaxConcurrentStreams(grpcMaxConcurrentStreams), + grpc.KeepaliveParams(keepalive.ServerParameters{ + Time: grpcKeepAliveTime, + Timeout: grpcKeepAliveTime, + }), + grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ + MinTime: grpcKeepAliveTime, + PermitWithoutStream: true, + }), } grpcOptions = append(grpcOptions, s.metrics.GRPCServerInterceptors()...) useTLS := s.config.TlsCertFile != "" diff --git a/pkg/mads/server/grpc.go b/pkg/mads/server/grpc.go index c1b63ab5d5bc..34bd75aeab07 100644 --- a/pkg/mads/server/grpc.go +++ b/pkg/mads/server/grpc.go @@ -3,6 +3,9 @@ package server import ( "fmt" "net" + "time" + + "google.golang.org/grpc/keepalive" observability_proto "github.com/kumahq/kuma/api/observability/v1alpha1" @@ -14,7 +17,10 @@ import ( core_metrics "github.com/kumahq/kuma/pkg/metrics" ) -const grpcMaxConcurrentStreams = 1000000 +const ( + grpcMaxConcurrentStreams = 1000000 + grpcKeepAliveTime = 15 * time.Second +) var ( grpcServerLog = core.Log.WithName("mads-server").WithName("grpc") @@ -33,6 +39,14 @@ var ( func (s *grpcServer) Start(stop <-chan struct{}) error { grpcOptions := []grpc.ServerOption{ grpc.MaxConcurrentStreams(grpcMaxConcurrentStreams), + grpc.KeepaliveParams(keepalive.ServerParameters{ + Time: grpcKeepAliveTime, + Timeout: grpcKeepAliveTime, + }), + grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ + MinTime: grpcKeepAliveTime, + PermitWithoutStream: true, + }), } grpcOptions = append(grpcOptions, s.metrics.GRPCServerInterceptors()...) grpcOptions = append(grpcOptions, grpc.MaxConcurrentStreams(grpcMaxConcurrentStreams))