|
|
|
@ -52,9 +52,11 @@ static int * gw_status_get_counter(gw_host *host, gw_proc *proc, const char *tag
|
|
|
|
|
memcpy(label, "gw.backend.", llen);
|
|
|
|
|
|
|
|
|
|
len = buffer_string_length(host->id);
|
|
|
|
|
force_assert(len < sizeof(label) - llen);
|
|
|
|
|
memcpy(label+llen, host->id->ptr, len);
|
|
|
|
|
llen += len;
|
|
|
|
|
if (len) {
|
|
|
|
|
force_assert(len < sizeof(label) - llen);
|
|
|
|
|
memcpy(label+llen, host->id->ptr, len);
|
|
|
|
|
llen += len;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (proc) {
|
|
|
|
|
force_assert(llen < sizeof(label) - (LI_ITOSTRING_LENGTH + 1));
|
|
|
|
@ -75,34 +77,45 @@ static void gw_proc_tag_inc(gw_host *host, gw_proc *proc, const char *tag, size_
|
|
|
|
|
++(*gw_status_get_counter(host, proc, tag, len));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void gw_proc_load_inc(gw_host *host, gw_proc *proc) {
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".load")) = ++proc->load;
|
|
|
|
|
static void gw_proc_connected_inc(gw_host *host, gw_proc *proc) {
|
|
|
|
|
UNUSED(host);
|
|
|
|
|
++(*proc->stats_connected); /* "gw.backend...connected" */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
status_counter_inc(CONST_STR_LEN("gw.active-requests"));
|
|
|
|
|
static void gw_proc_load_inc(gw_host *host, gw_proc *proc) {
|
|
|
|
|
*proc->stats_load = ++proc->load; /* "gw.backend...load" */
|
|
|
|
|
++(*host->stats_global_active); /* "gw.active-requests" */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void gw_proc_load_dec(gw_host *host, gw_proc *proc) {
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".load")) = --proc->load;
|
|
|
|
|
|
|
|
|
|
status_counter_dec(CONST_STR_LEN("gw.active-requests"));
|
|
|
|
|
*proc->stats_load = --proc->load; /* "gw.backend...load" */
|
|
|
|
|
--(*host->stats_global_active); /* "gw.active-requests" */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void gw_host_assign(gw_host *host) {
|
|
|
|
|
*gw_status_get_counter(host, NULL, CONST_STR_LEN(".load")) = ++host->load;
|
|
|
|
|
*host->stats_load = ++host->load; /* "gw.backend...load" */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void gw_host_reset(gw_host *host) {
|
|
|
|
|
*gw_status_get_counter(host, NULL, CONST_STR_LEN(".load")) = --host->load;
|
|
|
|
|
*host->stats_load = --host->load; /* "gw.backend...load" */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int gw_status_init(gw_host *host, gw_proc *proc) {
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".disabled")) = 0;
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".died")) = 0;
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".overloaded")) = 0;
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".connected")) = 0;
|
|
|
|
|
*gw_status_get_counter(host, proc, CONST_STR_LEN(".load")) = 0;
|
|
|
|
|
|
|
|
|
|
*gw_status_get_counter(host, NULL, CONST_STR_LEN(".load")) = 0;
|
|
|
|
|
proc->stats_connected =
|
|
|
|
|
gw_status_get_counter(host, proc, CONST_STR_LEN(".connected"));
|
|
|
|
|
*proc->stats_connected = 0;
|
|
|
|
|
proc->stats_load =
|
|
|
|
|
gw_status_get_counter(host, proc, CONST_STR_LEN(".load"));
|
|
|
|
|
*proc->stats_load = 0;
|
|
|
|
|
|
|
|
|
|
host->stats_load =
|
|
|
|
|
gw_status_get_counter(host, NULL, CONST_STR_LEN(".load"));
|
|
|
|
|
*host->stats_load = 0;
|
|
|
|
|
host->stats_global_active =
|
|
|
|
|
status_counter_get_counter(CONST_STR_LEN("gw.active-requests"));
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
@ -221,7 +234,7 @@ static int gw_extension_insert(gw_exts *ext, const buffer *key, gw_host *fh) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void gw_proc_connect_success(gw_host *host, gw_proc *proc, int debug, request_st * const r) {
|
|
|
|
|
gw_proc_tag_inc(host, proc, CONST_STR_LEN(".connected"));
|
|
|
|
|
gw_proc_connected_inc(host, proc); /*(".connected")*/
|
|
|
|
|
proc->last_used = log_monotonic_secs;
|
|
|
|
|
|
|
|
|
|
if (debug) {
|
|
|
|
|