diff --git a/core/src/server/grpc_impl/GrpcServer.cpp b/core/src/server/grpc_impl/GrpcServer.cpp index 81f1be47b8f901556e5409f8853a357f9ebcf2f0..8717739e5ceef641bb50b9ee48e288210e826e20 100644 --- a/core/src/server/grpc_impl/GrpcServer.cpp +++ b/core/src/server/grpc_impl/GrpcServer.cpp @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -49,7 +50,10 @@ class NoReusePortOption : public ::grpc::ServerBuilderOption { void UpdateArguments(::grpc::ChannelArguments* args) override { args->SetInt(GRPC_ARG_ALLOW_REUSEPORT, 0); - args->SetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS, 20); + int grpc_concurrency = 4 * std::thread::hardware_concurrency(); + grpc_concurrency = std::max(32, grpc_concurrency); + grpc_concurrency = std::min(256, grpc_concurrency); + args->SetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS, grpc_concurrency); } void