mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-05-09 19:28:02 +00:00
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 <cum_sess> be_counters field for servers, but <cum_conn> instead for backend proxies. Adjust this by using <cum_sess> for both proxies and servers. As such, <cum_conn> field can be removed from be_counters. Note that several diagnostic messages which reports total frontend and backend connections were adjusted to use <cum_sess>. 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.
This commit is contained in:
parent
93066be32d
commit
c02ec9a9db
@ -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 */
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user