You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm not sure if this is a bug of nghttp2 v1.28.0 or it is because of alpine packages.
But the problem I'm facing is that the nghttp2 v1.28.0 does not load balance grpc requests across multiple backends. All requests go to only one specific backend.
The problem disappear when downgrading to nghttp2 v.1.22.0.
In short, the current implementation prefers existing backend connection. HTTP/2 multiplexes requests in a single connection. It also has limits about the number of concurrent requests.
Currently nghttpx reuses the existing connection if it does not saturate concurrent requests limit.
Keeping and establishing multiple TCP connections is huge burden, and load testing shows that this algorithm shows 3 times faster performance.
But if backend server is slow, and/or backend server advertises large concurrent streams (e.g., 1000), then it is possible that only one server is used.
I'm ok to revert the change if it voids the purpose of load balancing.
In my test setup, I have 2 backends, one with a very good connection to nghttp2, one with a slow connection. I haven't tested it carefully, but it seems like all requests go to the one with the good connection.
You mentioned that the current implementation is 3 times faster than before but if all connections go
to one backend, it is a much bigger problem. So I think it is better to revert the change.
Hi,
I'm not sure if this is a bug of nghttp2 v1.28.0 or it is because of alpine packages.
But the problem I'm facing is that the nghttp2 v1.28.0 does not load balance grpc requests across multiple backends. All requests go to only one specific backend.
The problem disappear when downgrading to nghttp2 v.1.22.0.
Here is the alpine repository that I used to install nghttp2:
https://pkgs.alpinelinux.org/packages?name=nghttp2&branch=&repo=&arch=&maintainer=
The text was updated successfully, but these errors were encountered: