odissey: print periodic statistics

This commit is contained in:
Dmitry Simonenko 2017-03-16 18:20:36 +03:00
parent fd47d42e0a
commit 646b520dd4
1 changed files with 35 additions and 0 deletions

View File

@ -38,6 +38,31 @@
#include "od_fe.h" #include "od_fe.h"
#include "od_be.h" #include "od_be.h"
static inline void
od_periodic_stats (od_pooler_t *pooler)
{
od_log(&pooler->od->log, NULL, "statistics: clients %d",
pooler->client_list.count);
od_list_t *i;
od_listforeach(&pooler->route_pool.list, i) {
od_route_t *route;
route = od_container_of(i, od_route_t, link);
od_log(&pooler->od->log, NULL,
" [%.*s, %.*s] clients %d, "
"servers_active %d, "
"servers_idle %d, "
"servers_reset %d",
route->id.database_len,
route->id.database,
route->id.user_len,
route->id.user,
route->client_pool.count_active,
route->server_pool.count_active,
route->server_pool.count_idle,
route->server_pool.count_reset);
}
}
static inline int static inline int
od_expire_mark(od_server_t *server, void *arg) od_expire_mark(od_server_t *server, void *arg)
{ {
@ -65,6 +90,7 @@ od_expire_mark(od_server_t *server, void *arg)
void od_periodic(void *arg) void od_periodic(void *arg)
{ {
od_pooler_t *pooler = arg; od_pooler_t *pooler = arg;
int stats_tick = 0;
for (;;) for (;;)
{ {
@ -111,6 +137,15 @@ void od_periodic(void *arg)
od_beclose(server); od_beclose(server);
} }
/* stats */
if (pooler->od->scheme.stats_period > 0) {
stats_tick++;
if (stats_tick >= pooler->od->scheme.stats_period) {
od_periodic_stats(pooler);
stats_tick = 0;
}
}
/* 1 second soft interval */ /* 1 second soft interval */
mm_sleep(pooler->env, 1000); mm_sleep(pooler->env, 1000);
} }