diff --git a/server/core/dcb.c b/server/core/dcb.c index 2a3d78ea1..aa60ab155 100644 --- a/server/core/dcb.c +++ b/server/core/dcb.c @@ -2056,7 +2056,7 @@ dcb_maybe_add_persistent(DCB *dcb) { LOGIF(LD, (skygw_log_write( LOGFILE_DEBUG, - "%lu [dcb_connect] Not adding DCB to persistent pool, user %s, " + "%lu [dcb_maybe_add_persistent] Not adding DCB to persistent pool, user %s, " "max for pool %d, error handle called %s, hung flag %s, pool count %d.\n", pthread_self(), user ? user : "", diff --git a/server/core/server.c b/server/core/server.c index de7463c25..bd723c356 100644 --- a/server/core/server.c +++ b/server/core/server.c @@ -85,6 +85,7 @@ SERVER *server; server->master_id = -1; server->depth = -1; server->persistent = NULL; + server->persistmax = 0; spinlock_init(&server->persistlock); spinlock_acquire(&server_spin); @@ -149,10 +150,12 @@ DCB * server_get_persistent(SERVER *server, char *user, const char *protocol) { DCB *dcb, *previous = NULL; + int poolsize; - if (server->persistent && dcb_persistent_clean_count(server->persistent, false) && server->persistent) + if (server->persistent && (poolsize = dcb_persistent_clean_count(server->persistent, false)) && server->persistent) { spinlock_acquire(&server->persistlock); + server->persistmax = MAX(server->persistmax, poolsize); dcb = server->persistent; while (dcb) { if (dcb->user @@ -277,6 +280,7 @@ printServer(SERVER *server) printf("\tTotal connections: %d\n", server->stats.n_connections); printf("\tCurrent connections: %d\n", server->stats.n_current); printf("\tPersistent connections: %d\n", server->stats.n_persistent); + printf("\tPersistent actual max: %d\n", server->persistmax); } /** @@ -368,7 +372,9 @@ char *stat; server->stats.n_persistent); dcb_printf(dcb, "\tPersistent measured pool size: %d\n", dcb_persistent_clean_count(server->persistent, false)); - dcb_printf(dcb, "\tPersistent pool max size: %d\n", + dcb_printf(dcb, "\tPersistent max size achieved: %d\n", + server->persistmax); + dcb_printf(dcb, "\tPersistent pool size limit: %d\n", server->persistpoolmax); dcb_printf(dcb, "\tPersistent max time (secs): %d\n", server->persistmaxtime); @@ -530,7 +536,9 @@ SERVER_PARAM *param; server->stats.n_persistent); dcb_printf(dcb, "\tPersistent measured pool size: %d\n", dcb_persistent_clean_count(server->persistent, false)); - dcb_printf(dcb, "\tPersistent pool max size: %d\n", + dcb_printf(dcb, "\tPersistent actual size max: %d\n", + server->persistmax); + dcb_printf(dcb, "\tPersistent pool size limit: %d\n", server->persistpoolmax); dcb_printf(dcb, "\tPersistent max time (secs): %d\n", server->persistmaxtime); diff --git a/server/include/server.h b/server/include/server.h index 986796a9f..f31ab0422 100644 --- a/server/include/server.h +++ b/server/include/server.h @@ -104,6 +104,7 @@ typedef struct server { SPINLOCK persistlock; /**< Lock for adjusting the persistent connections list */ long persistpoolmax; /**< Maximum size of persistent connections pool */ long persistmaxtime; /**< Maximum number of seconds connection can live */ + long persistmax; /**< Maximum pool size actually achieved since startup */ #if defined(SS_DEBUG) skygw_chk_t server_chk_tail; #endif