MINOR: server: skip servers with no idle conns earlier

In conn_backend_get() we can avoid locking other servers when trying
to steal their connections when we know for sure they will not have
one, so let's do it to lower the contention on the lock.
This commit is contained in:
Willy Tarreau 2020-07-01 08:24:44 +02:00
parent 69f591e3b0
commit 151c253a1e

View File

@ -1099,6 +1099,9 @@ static struct connection *conn_backend_get(struct server *srv, int is_safe)
for (i = tid; !found && (i = ((i + 1 == global.nbthread) ? 0 : i + 1)) != tid;) {
struct mt_list *elt1, elt2;
if (!srv->curr_idle_thr[i])
continue;
HA_SPIN_LOCK(OTHER_LOCK, &idle_conns[i].toremove_lock);
mt_list_for_each_entry_safe(conn, &mt_list[i], list, elt1, elt2) {
if (conn->mux->takeover && conn->mux->takeover(conn) == 0) {