Router Back End Keep-Alive Connections

This topic describes how to enable support in the Gorouter for keep-alive connections with backends, and considerations for configuration.

For more information about support for keep-alive connections, see the Keep-Alive Connections section of the HTTP Routing topic.

Enable Keep-Alive Connections from the Gorouter to Back Ends

By default, support for keep-alive connections with back ends is disabled. An operator can enable the feature by configuring a non-zero value for the manifest property router.max_idle_connections.

Considerations for Configuring Maximum Idle Keep-Alive Connections

Each router process is limited to 100,000 file descriptors. Each inbound request consumes at most two file descriptors: one for the connection from the client, and one from the Gorouter to the back end. For this reason, the recommended number of maximum idle connections is 50,000 or fewer. As a few other file descriptors are consumed by the process under normal operation, this limit is more like 49,900.

In order to determine how many idle connections are needed, consider that the peak connections could be calculated by multiplying throughput by response time. For example, if a single router receives 1000 requests per second, and response time is 1 second, at any given time there are likely to be 1000 connections open to back ends. Accommodating for growth of 2x, an operator might configure a maximum of 2000 idle connections per router.

The Gorouter has been hardcoded with a limit of 100 idle connections per back end. The configurable property max_idle_connections governs idle connections across all back ends.

Create a pull request or raise an issue on the source for this page in GitHub