mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-24 12:20:59 +01:00
MEDIUM: backend: use a trylock to grab a connection on high FD counts as well
Commit b1adf03df ("MEDIUM: backend: use a trylock when trying to grab an
idle connection") solved a contention issue on the backend under normal
condition, but there is another one further, which only happens when the
number of FDs in use is considered too high, and which obviously causes
random crashes with just 16 threads once the number of FDs is about to be
exhausted.
Like the aforementioned patch, this one should be backported to 2.3.
This commit is contained in:
parent
2c481d0105
commit
9b9f8477f8
@ -1449,7 +1449,9 @@ int connect_server(struct stream *s)
|
|||||||
// see it possibly larger.
|
// see it possibly larger.
|
||||||
ALREADY_CHECKED(i);
|
ALREADY_CHECKED(i);
|
||||||
|
|
||||||
HA_SPIN_LOCK(IDLE_CONNS_LOCK, &idle_conns[i].idle_conns_lock);
|
if (HA_SPIN_TRYLOCK(IDLE_CONNS_LOCK, &idle_conns[i].idle_conns_lock) != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
node = ebmb_first(&srv->per_thr[i].idle_conns);
|
node = ebmb_first(&srv->per_thr[i].idle_conns);
|
||||||
if (node) {
|
if (node) {
|
||||||
conn_node = ebmb_entry(node, struct conn_hash_node, node);
|
conn_node = ebmb_entry(node, struct conn_hash_node, node);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user