Class ChannelPoolSettings (2.37.0)

  public 
  
 abstract 
  
 class 
 ChannelPoolSettings 
 

Settings to control ChannelPool behavior.

To facilitate low latency/high throughout applications, gax provides a ChannelPool . The pool is meant to facilitate high throughput/low latency clients. By splitting load across multiple gRPC channels the client can spread load across multiple frontends and overcome gRPC's limit of 100 concurrent RPCs per channel. However oversizing the ChannelPool can lead to underutilized channels which will lead to high tail latency due to GFEs disconnecting idle channels.

The ChannelPool is designed to adapt to varying traffic patterns by tracking outstanding RPCs and resizing the pool size. This class configures the behavior. In general clients should aim to have less than 50 concurrent RPCs per channel and at least 1 outstanding per channel per minute.

The settings in this class will be applied every minute.

Inheritance

java.lang.Object > ChannelPoolSettings

Static Methods

builder()

  public 
  
 static 
  
 ChannelPoolSettings 
 . 
 Builder 
  
 builder 
 () 
 
Returns
Type
Description

staticallySized(int size)

  public 
  
 static 
  
 ChannelPoolSettings 
  
 staticallySized 
 ( 
 int 
  
 size 
 ) 
 
Parameter
Name
Description
size
int
Returns
Type
Description

Constructors

ChannelPoolSettings()

  public 
  
 ChannelPoolSettings 
 () 
 

Methods

getInitialChannelCount()

  public 
  
 abstract 
  
 int 
  
 getInitialChannelCount 
 () 
 

The initial size of the channel pool.

During client construction the client open this many connections. This will be scaled up or down in the next period.

Returns
Type
Description
int

getMaxChannelCount()

  public 
  
 abstract 
  
 int 
  
 getMaxChannelCount 
 () 
 

The absolute maximum size of the channel pool.

Regardless of the current throughput, the number of channels will not exceed this limit

Returns
Type
Description
int

getMaxRpcsPerChannel()

  public 
  
 abstract 
  
 int 
  
 getMaxRpcsPerChannel 
 () 
 

Threshold to start scaling up the channel pool.

When the average of the maximum number of outstanding RPCs in a single minute surpass this threshold, channels will be added to the pool. For google services, gRPC channels will start locally queuing RPC when there are 100 concurrent RPCs.

Returns
Type
Description
int

getMinChannelCount()

  public 
  
 abstract 
  
 int 
  
 getMinChannelCount 
 () 
 

The absolute minimum size of the channel pool.

Regardless of the current throughput, the number of channels will not drop below this limit

Returns
Type
Description
int

getMinRpcsPerChannel()

  public 
  
 abstract 
  
 int 
  
 getMinRpcsPerChannel 
 () 
 

Threshold to start scaling down the channel pool.

When the average of the maximum number of outstanding RPCs in a single minute drop below this threshold, channels will be removed from the pool.

Returns
Type
Description
int

isPreemptiveRefreshEnabled()

  public 
  
 abstract 
  
 boolean 
  
 isPreemptiveRefreshEnabled 
 () 
 

If all of the channels should be replaced on an hourly basis.

The GFE will forcibly disconnect active channels after an hour. To minimize the cost of reconnects, this will create a new channel asynchronuously, prime it and then swap it with an old channel.

Returns
Type
Description

toBuilder()

  public 
  
 abstract 
  
 ChannelPoolSettings 
 . 
 Builder 
  
 toBuilder 
 () 
 
Returns
Type
Description
Design a Mobile Site
View Site in Mobile | Classic
Share by: