Why doesn’t RR load balancing appear to be even?

Envoy utilizes a siloed threading model. This means that worker threads and the load balancers that run on them do not coordinate with each other. When utilizing load balancing policies such as round robin, it may thus appear that load balancing is not working properly when using multiple workers. The --concurrency option can be used to adjust the number of workers if desired.

The siloed execution model is also the reason why multiple HTTP/2 connections may be established to each upstream; connection pools are not shared between workers.