Skip to content

[Feature Request] GRPC Server Optimizations #19277

@karenyrx

Description

@karenyrx

Is your feature request related to a problem? Please describe

Investigate GRPC server optimizations for higher throughput.

Current Issues

  1. Event Loop Blocking: gRPC service methods execute directly on Netty event loop threads via directExecutor(), causing I/O blocking during protobuf serialization
  2. Limited Concurrency Control: No dedicated setting to tune gRPC request processing parallelism independently of network I/O threads
  3. Shared Event Loop Groups: GRPC boss and worker event loops are not properly separated, leading to connection acceptance competing with I/O processing

Describe the solution you'd like

1: Dedicated gRPC Executor Thread Pool (solves #1 and #2)

  • Replace directExecutor() with a dedicated ForkJoinPool for processing gRPC service calls
  • Add grpc.netty.executor_count setting to control this GRPC request processing thread pool size
  • (Note this is in contrast with grpc.netty.worker_count which is controlling the number of network I/O threads)

2: Separated Event Loop Groups (solves #3)

  • Prevent connection acceptance from blocking I/O processing:
    • Boss Event Loop Group: Dedicated to accepting new client connections
    • Worker Event Loop Group: Dedicated to network I/O operations (grpc.netty.worker_count threads)

Related component

Search:Performance

Describe alternatives you've considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions