Skip to content

ServerBuilder defaults affected by Netty memory leak #2358

@craigday

Description

@craigday

GRPC 1.0.0 and 1.0.1 are both based on Netty 4.1.3.Final. This version of Netty is affected by a memory leak bug referenced and fixed in the following commit:

netty/netty@94d7557

The vanilla GRPC ServerBuilder uses a Executors.newCachedThreadPool() executor that expands and contracts based on the load. Any thread that is cleaned up leaks a whole lot of Netty cached data. The workaround is to specify your own Executor that reuses the threads and doesn't recycle them, something like:

ServerBuilder
    .forPort(port)
    .executor(Executors.newFixedThreadPool(8))
    .addService(myService)
    .build()
    .start();

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions