From 8bb48f6333f9c535e14b86abfa2da2a238dd075b Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 31 Jan 2018 09:54:16 +0000 Subject: [PATCH] Add gRPC MaxConcurrentStreams limit and flag Plausibly this should be in weaveworks/common/server, but I wanted to try it out more locally first. --- cmd/ingester/main.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/ingester/main.go b/cmd/ingester/main.go index 7ec28261fe2..992dbc3bb94 100644 --- a/cmd/ingester/main.go +++ b/cmd/ingester/main.go @@ -32,16 +32,22 @@ func main() { storageConfig storage.Config ingesterConfig ingester.Config logLevel util.LogLevel + maxStreams uint ) // Ingester needs to know our gRPC listen port. ingesterConfig.ListenPort = &serverConfig.GRPCListenPort util.RegisterFlags(&serverConfig, &chunkStoreConfig, &storageConfig, &schemaConfig, &ingesterConfig, &logLevel) + flag.UintVar(&maxStreams, "ingester.max-concurrent-streams", 1000, "Limit on the number of concurrent streams for gRPC calls (0 = unlimited)") flag.Parse() schemaConfig.MaxChunkAge = ingesterConfig.MaxChunkAge util.InitLogger(logLevel.AllowedLevel) + if maxStreams > 0 { + serverConfig.GRPCOptions = append(serverConfig.GRPCOptions, grpc.MaxConcurrentStreams(uint32(maxStreams))) + } + server, err := server.New(serverConfig) if err != nil { level.Error(util.Logger).Log("msg", "error initializing server", "err", err)