diff --git a/buildgrid/_app/commands/cmd_server.py b/buildgrid/_app/commands/cmd_server.py index 169aed60e036fdb95ae62970790c26f56d9fccee..c76ede5ae041d52c90c923734ff0c930778647f4 100644 --- a/buildgrid/_app/commands/cmd_server.py +++ b/buildgrid/_app/commands/cmd_server.py @@ -119,6 +119,14 @@ def _create_server_from_config(configuration): click.echo("Error: Configuration, {}.".format(e), err=True) sys.exit(-1) + if 'thread-pool-size' in configuration: + try: + kargs['max_workers'] = int(configuration['thread-pool-size']) + + except ValueError as e: + click.echo("Error: Configuration, {}.".format(e), err=True) + sys.exit(-1) + server = BuildGridServer(**kargs) try: diff --git a/buildgrid/_app/settings/reference.yml b/buildgrid/_app/settings/reference.yml index f8776ab144a36bd1bda38023215b112fe3acef55..f19f03bd93b7d23011f72507ec2dd31f4b56bc3e 100644 --- a/buildgrid/_app/settings/reference.yml +++ b/buildgrid/_app/settings/reference.yml @@ -136,3 +136,7 @@ monitoring: # binary - Protobuf binary format. # json - JSON format. serialization-format: binary + +## +# Maximum number of gRPC threads. +thread-pool-size: 20 diff --git a/buildgrid/server/instance.py b/buildgrid/server/instance.py index e71fe8905f73bbc16ca6cd2ca9ede91ccb5577e6..68100e8a5c43cc38df486293fc4e046aee403a1b 100644 --- a/buildgrid/server/instance.py +++ b/buildgrid/server/instance.py @@ -91,6 +91,8 @@ class BuildGridServer: self.__grpc_server = grpc.server(self.__grpc_executor, options=(('grpc.so_reuseport', 0),)) + self.__logger.debug("Setting up gRPC server with thread-limit=[%s]", max_workers) + self.__main_loop = asyncio.get_event_loop() self.__monitoring_bus = None diff --git a/data/config/controller.conf b/data/config/controller.conf index 276b2177be2dc47a47b6767942acdf1794166653..7a02296b6ec76a29314fdadfa26d57a7ca4515fb 100644 --- a/data/config/controller.conf +++ b/data/config/controller.conf @@ -38,3 +38,5 @@ instances: - !execution storage: *data-store action-cache: *build-cache + +thread-pool-size: 200