mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
MINOR: server: force add to idle on reverse
A backend connection is inserted in server idle list via srv_add_to_idle_list(). This function has several conditions which may cause the connection to be rejected instead. One of this condition is based on the current estimate count of needed connections for the server. If the count of idle connections stored has already reached this estimation, the new connection is rejected. This is in opposition with the purpose of reverse HTTP. On active reverse, haproxy can instantiate several connections to properly serve the future traffic. However, the opposite passive haproxy will have only a low estimate of needed connection and will reject most of them. To fix this, simply check CO_FL_REVERSED connection flag on srv_add_to_idle_list(). If set, the connection is inserted without checking for estimate count. Note that all other conditions are not impacted, so it's still possible to reject a connection, for example if process FD limit is reached. This commit relies on recent patch which change CO_FL_REVERSED flag for connection after passive reverse.
This commit is contained in:
parent
a1457296d5
commit
560cb1332a
@ -6240,7 +6240,8 @@ int srv_add_to_idle_list(struct server *srv, struct connection *conn, int is_saf
|
||||
(is_safe || eb_is_empty(&srv->per_thr[tid].idle_conns))) ||
|
||||
(ha_used_fds < global.tune.pool_low_count &&
|
||||
(srv->curr_used_conns + srv->curr_idle_conns <=
|
||||
MAX(srv->curr_used_conns, srv->est_need_conns) + srv->low_idle_conns))) &&
|
||||
MAX(srv->curr_used_conns, srv->est_need_conns) + srv->low_idle_conns ||
|
||||
(conn->flags & CO_FL_REVERSED)))) &&
|
||||
!conn->mux->used_streams(conn) && conn->mux->avail_streams(conn)) {
|
||||
int retadd;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user