--- workspace/mod_jk/native/common/jk_ajp_common.c 2014-08-19 12:21:41.482639285 +0200
+++ workspace/mod_jk/native/common/jk_ajp_common.c 2014-08-19 12:35:48.971260070 +0200
@@ -1041,6 +1041,10 @@ int ajp_connect_to_endpoint(ajp_endpoint
return JK_FALSE;
}
ae->worker->s->connected++;
+ /* Update maximum number of connections
+ */
+ if (ae->worker->s->connected > ae->worker->s->max_connected)
+ ae->worker->s->max_connected = ae->worker->s->connected;
/* set last_access only if needed
*/
if (ae->worker->cache_timeout > 0)
--- workspace/mod_jk/native/common/jk_shm.h 2014-07-24 11:34:00.491471625 +0200
+++ workspace/mod_jk/native/common/jk_shm.h 2014-08-19 12:31:58.082915741 +0200
@@ -97,6 +97,8 @@ struct jk_shm_ajp_worker
/* current error state (runtime) of the worker */
volatile int state;
/* Statistical data */
+ /* Maximum number of connected channels */
+ volatile int max_connected;
/* Number of currently connected channels */
volatile int connected;
/* Number of currently busy channels */
--- workspace/mod_jk/native/common/jk_status.c 2014-07-24 11:34:00.498471696 +0200
+++ workspace/mod_jk/native/common/jk_status.c 2014-08-19 12:32:06.162997834 +0200
@@ -263,7 +263,7 @@
"
State | " \
"Acc | " \
"Err | CE | RE | " \
- "Wr | Rd | Busy | Max | Con | LR | LE | " \
+ "Wr | Rd | Busy | Max | Con | MxCon | LR | LE | " \
"\n"
#define JK_STATUS_SHOW_AJP_ROW "" \
"%s | " \
@@ -277,6 +277,7 @@
"%d | " \
"%d | " \
"%d | " \
+ "%d | " \
"%s | " \
"
\n"
#define JK_STATUS_SHOW_LB_HEAD "" \
@@ -308,7 +309,7 @@
"D | F | M | " \
"V | Acc | Sess | " \
"Err | CE | RE | " \
- "Wr | Rd | Busy | Max | Con | " \
+ "Wr | Rd | Busy | Max | Con | MxCon | " \
"" JK_STATUS_ARG_LBM_TEXT_ROUTE " | " \
"RR | Cd | Rs | LR | LE | " \
"
\n"
@@ -329,6 +330,7 @@
"%d | " \
"%d | " \
"%d | " \
+ "%d | " \
"%s | " \
"%s | " \
"%s | " \
@@ -1849,6 +1851,7 @@ static void display_worker_ajp_details(j
aw->s->busy,
aw->s->max_busy,
aw->s->connected,
+ aw->s->max_connected,
wr->route,
wr->redirect ? (*wr->redirect ? wr->redirect : " ") : " ",
wr->domain ? (*wr->domain ? wr->domain : " ") : " ",
@@ -1871,6 +1874,7 @@ static void display_worker_ajp_details(j
aw->s->busy,
aw->s->max_busy,
aw->s->connected,
+ aw->s->max_connected,
delta_reset,
rc_time > 0 ? buf_time : " ");
}
@@ -1928,6 +1932,7 @@ static void display_worker_ajp_details(j
jk_print_xml_att_int(s, off+2, "busy", aw->s->busy);
jk_print_xml_att_int(s, off+2, "max_busy", aw->s->max_busy);
jk_print_xml_att_int(s, off+2, "connected", aw->s->connected);
+ jk_print_xml_att_int(s, off+2, "max_connected", aw->s->max_connected);
if (lb) {
jk_print_xml_att_int(s, off+2, "time_to_recover_min", rs_min);
jk_print_xml_att_int(s, off+2, "time_to_recover_max", rs_max);
@@ -1995,6 +2000,7 @@ static void display_worker_ajp_details(j
jk_printf(s, " busy=%d", aw->s->busy);
jk_printf(s, " max_busy=%d", aw->s->max_busy);
jk_printf(s, " connected=%d", aw->s->connected);
+ jk_printf(s, " max_connected=%d", aw->s->max_connected);
if (lb) {
jk_printf(s, " time_to_recover_min=%d", rs_min);
jk_printf(s, " time_to_recover_max=%d", rs_max);
@@ -2059,6 +2065,7 @@ static void display_worker_ajp_details(j
jk_print_prop_att_int(s, w, ajp_name, "busy", aw->s->busy);
jk_print_prop_att_int(s, w, ajp_name, "max_busy", aw->s->max_busy);
jk_print_prop_att_int(s, w, ajp_name, "connected", aw->s->connected);
+ jk_print_prop_att_int(s, w, ajp_name, "max_connected", aw->s->max_connected);
if (lb) {
jk_print_prop_att_int(s, w, ajp_name, "time_to_recover_min", rs_min);
jk_print_prop_att_int(s, w, ajp_name, "time_to_recover_max", rs_max);
@@ -3726,6 +3733,7 @@ static void display_legend(jk_ws_service
"Busy | Current number of busy connections |
\n"
"Max | Maximum number of busy connections |
\n"
"Con | Current number of backend connections |
\n"
+ "MxCon | Maximum number of backend connections |
\n"
"RR | Route redirect |
\n"
"Cd | Cluster domain |
\n"
"Rs | Recovery scheduled in app. min/max seconds |
\n"