From: Amaury Denoyelle Date: Thu, 4 Apr 2024 16:08:46 +0000 (+0200) Subject: BUG/MINOR: backend: use cum_sess counters instead of cum_conn X-Git-Tag: v3.0-dev9~82 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c02ec9a9db205fda124a40a2a87913a0528b0e5b;p=thirdparty%2Fhaproxy.git BUG/MINOR: backend: use cum_sess counters instead of cum_conn This commit is part of a serie to align counters usage between frontends/listeners on one side and backends/servers on the other. "stot" metric refers to the total number of sessions. On backend side, it is interpreted as a number of streams. Previously, this was accounted using be_counters field for servers, but instead for backend proxies. Adjust this by using for both proxies and servers. As such, field can be removed from be_counters. Note that several diagnostic messages which reports total frontend and backend connections were adjusted to use . However, this is an outdated and misleading information as it does reports streams count on backend side. These messages should be fixed in a separate commit. This should be backported to all stable releases. --- diff --git a/include/haproxy/counters-t.h b/include/haproxy/counters-t.h index 933c228f05..8ba6322649 100644 --- a/include/haproxy/counters-t.h +++ b/include/haproxy/counters-t.h @@ -68,7 +68,6 @@ struct fe_counters { /* counters used by servers and backends */ struct be_counters { unsigned int conn_max; /* max # of active sessions */ - long long cum_conn; /* cumulated number of received connections */ long long cum_sess; /* cumulated number of accepted connections */ long long cum_lbconn; /* cumulated number of sessions processed by load balancing (BE only) */ unsigned long last_sess; /* last session time */ diff --git a/include/haproxy/proxy.h b/include/haproxy/proxy.h index 01b0f17b5e..c3ab1701b8 100644 --- a/include/haproxy/proxy.h +++ b/include/haproxy/proxy.h @@ -163,10 +163,10 @@ static inline void proxy_inc_fe_cum_sess_ver_ctr(struct listener *l, struct prox _HA_ATOMIC_INC(&l->counters->cum_sess_ver[http_ver - 1]); } -/* increase the number of cumulated connections on the designated backend */ +/* increase the number of cumulated streams on the designated backend */ static inline void proxy_inc_be_ctr(struct proxy *be) { - _HA_ATOMIC_INC(&be->be_counters.cum_conn); + _HA_ATOMIC_INC(&be->be_counters.cum_sess); HA_ATOMIC_UPDATE_MAX(&be->be_counters.sps_max, update_freq_ctr(&be->be_sess_per_sec, 1)); } diff --git a/include/haproxy/server.h b/include/haproxy/server.h index 18b4d38748..cb1c3c5494 100644 --- a/include/haproxy/server.h +++ b/include/haproxy/server.h @@ -176,7 +176,7 @@ void srv_set_dyncookie(struct server *s); int srv_check_reuse_ws(struct server *srv); const struct mux_ops *srv_get_ws_proto(struct server *srv); -/* increase the number of cumulated connections on the designated server */ +/* increase the number of cumulated streams on the designated server */ static inline void srv_inc_sess_ctr(struct server *s) { _HA_ATOMIC_INC(&s->counters.cum_sess); diff --git a/src/haproxy.c b/src/haproxy.c index 79059b97a1..a5fa6dfcd1 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1006,19 +1006,19 @@ static void sig_dump_state(struct sig_handler *sh) chunk_printf(&trash, "SIGHUP: Proxy %s has no servers. Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.", p->id, - p->feconn, p->beconn, p->totpend, p->queue.length, p->fe_counters.cum_conn, p->be_counters.cum_conn); + p->feconn, p->beconn, p->totpend, p->queue.length, p->fe_counters.cum_conn, p->be_counters.cum_sess); } else if (p->srv_act == 0) { chunk_printf(&trash, "SIGHUP: Proxy %s %s ! Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.", p->id, (p->srv_bck) ? "is running on backup servers" : "has no server available", - p->feconn, p->beconn, p->totpend, p->queue.length, p->fe_counters.cum_conn, p->be_counters.cum_conn); + p->feconn, p->beconn, p->totpend, p->queue.length, p->fe_counters.cum_conn, p->be_counters.cum_sess); } else { chunk_printf(&trash, "SIGHUP: Proxy %s has %d active servers and %d backup servers available." " Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.", p->id, p->srv_act, p->srv_bck, - p->feconn, p->beconn, p->totpend, p->queue.length, p->fe_counters.cum_conn, p->be_counters.cum_conn); + p->feconn, p->beconn, p->totpend, p->queue.length, p->fe_counters.cum_conn, p->be_counters.cum_sess); } ha_warning("%s\n", trash.area); send_log(p, LOG_NOTICE, "%s\n", trash.area); diff --git a/src/proxy.c b/src/proxy.c index 92c5df143a..e5ba7bf120 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1889,11 +1889,11 @@ void proxy_cond_disable(struct proxy *p) */ if ((p->mode == PR_MODE_TCP || p->mode == PR_MODE_HTTP || p->mode == PR_MODE_SYSLOG) && !(p->cap & PR_CAP_INT)) ha_warning("Proxy %s stopped (cumulated conns: FE: %lld, BE: %lld).\n", - p->id, p->fe_counters.cum_conn, p->be_counters.cum_conn); + p->id, p->fe_counters.cum_conn, p->be_counters.cum_sess); if ((p->mode == PR_MODE_TCP || p->mode == PR_MODE_HTTP) && !(p->cap & PR_CAP_INT)) send_log(p, LOG_WARNING, "Proxy %s stopped (cumulated conns: FE: %lld, BE: %lld).\n", - p->id, p->fe_counters.cum_conn, p->be_counters.cum_conn); + p->id, p->fe_counters.cum_conn, p->be_counters.cum_sess); if (p->table && p->table->size && p->table->sync_task) task_wakeup(p->table->sync_task, TASK_WOKEN_MSG); diff --git a/src/stats.c b/src/stats.c index 959dc3593c..3c44afe663 100644 --- a/src/stats.c +++ b/src/stats.c @@ -1645,7 +1645,7 @@ int stats_fill_be_stats(struct proxy *px, int flags, struct field *stats, int le metric = mkf_u32(FO_CONFIG|FN_LIMIT, px->fullconn); break; case ST_F_STOT: - metric = mkf_u64(FN_COUNTER, px->be_counters.cum_conn); + metric = mkf_u64(FN_COUNTER, px->be_counters.cum_sess); break; case ST_F_BIN: metric = mkf_u64(FN_COUNTER, px->be_counters.bytes_in);