Author: rjung
Date: Fri Oct 3 14:43:59 2008
New Revision: 701543
URL: http://svn.apache.org/viewvc?rev=701543&view=rev
Log:
Add display of seconds since last statistics reset
to status worker.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
tomcat/connectors/trunk/jk/native/common/jk_shm.h
tomcat/connectors/trunk/jk/native/common/jk_status.c
tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=701543&r1=701542&r2=701543&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Fri Oct 3
14:43:59 2008
@@ -2576,6 +2576,7 @@
if(p->maintain_time < 0)
p->maintain_time = 0;
p->s->last_maintain_time = time(NULL);
+ p->s->last_reset = p->s->last_maintain_time;
if (JK_IS_DEBUG_LEVEL(l)) {
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?rev=701543&r1=701542&r2=701543&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Fri Oct 3 14:43:59
2008
@@ -1332,9 +1332,9 @@
}
if (p->states[rec->i] == JK_LB_STATE_ERROR)
jk_log(l, JK_LOG_INFO,
- "service failed, %sworker %s is in error state",
- rec->s->state == JK_LB_STATE_ERROR ? "entire " : "",
- rec->name);
+ "service failed, worker %s is in %serror state",
+ rec->name,
+ rec->s->state == JK_LB_STATE_ERROR ? "" : "local ");
if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
jk_shm_unlock();
}
@@ -1607,6 +1607,7 @@
if(p->maintain_time < 0)
p->maintain_time = 0;
p->s->last_maintain_time = time(NULL);
+ p->s->last_reset = p->s->last_maintain_time;
p->lbmethod = jk_get_lb_method(props, p->name);
p->lblock = jk_get_lb_lock(props, p->name);
Modified: tomcat/connectors/trunk/jk/native/common/jk_shm.h
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_shm.h?rev=701543&r1=701542&r2=701543&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_shm.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_shm.h Fri Oct 3 14:43:59 2008
@@ -94,7 +94,7 @@
volatile int busy;
/* Maximum number of busy channels */
volatile int max_busy;
- volatile time_t error_time;
+ volatile time_t error_time;
/* Number of bytes read from remote */
volatile jk_uint64_t readed;
/* Number of bytes transferred to remote */
@@ -109,7 +109,9 @@
volatile jk_uint32_t reply_timeouts;
/* Number of client errors */
volatile jk_uint32_t client_errors;
- volatile time_t last_maintain_time;
+ /* Last reset time */
+ volatile time_t last_reset;
+ volatile time_t last_maintain_time;
};
typedef struct jk_shm_ajp_worker jk_shm_ajp_worker_t;
@@ -139,7 +141,7 @@
/* Current lb value */
volatile jk_uint64_t lb_value;
/* Statistical data */
- volatile time_t error_time;
+ volatile time_t error_time;
/* Number of times the worker was elected - snapshot during maintenance */
volatile jk_uint64_t elected_snapshot;
/* Number of non 200 responses */
@@ -164,7 +166,9 @@
int lbmethod;
int lblock;
unsigned int max_packet_size;
- volatile time_t last_maintain_time;
+ /* Last reset time */
+ volatile time_t last_reset;
+ volatile time_t last_maintain_time;
/* Session cookie */
char session_cookie[JK_SHM_STR_SIZ+1];
/* Session path */
Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?rev=701543&r1=701542&r2=701543&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Fri Oct 3 14:43:59
2008
@@ -244,7 +244,7 @@
"<th>State</th>" \
"<th>Acc</th>" \
"<th>Err</th><th>CE</th><th>RE</th>" \
-
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th>" \
+
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th><th>LR</th>" \
"</tr>\n"
#define JK_STATUS_SHOW_AJP_ROW "<tr>" \
"<td>%s</td>" \
@@ -256,6 +256,7 @@
"<td>%s</td>" \
"<td>%d</td>" \
"<td>%d</td>" \
+ "<td>%d</td>" \
"</tr>\n"
#define JK_STATUS_SHOW_LB_HEAD "<tr>" \
"<th>Type</th>" \
@@ -286,7 +287,7 @@
"<th>Err</th><th>CE</th><th>RE</th>" \
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th>" \
"<th>" JK_STATUS_ARG_LBM_TEXT_ROUTE
"</th>" \
- "<th>RR</th><th>Cd</th><th>Rs</th>"
\
+
"<th>RR</th><th>Cd</th><th>Rs</th><th>LR</th>" \
"</tr>\n"
#define JK_STATUS_SHOW_MEMBER_ROW "<td>%s</td>" \
"<td>%s</td>" \
@@ -307,6 +308,7 @@
"<td>%s</td>" \
"<td>%s</td>" \
"<td>%d/%d</td>" \
+ "<td>%d</td>" \
"</tr>\n"
#define JK_STATUS_SHOW_MEMBER_CONF_HEAD "<tr>" \
"<th>Name</th><th>Type</th>" \
@@ -1693,7 +1695,8 @@
wr->redirect ? (*wr->redirect ? wr->redirect : " ")
: " ",
wr->domain ? (*wr->domain ? wr->domain : " ") :
" ",
rs_min,
- rs_max);
+ rs_max,
+ (int)difftime(now, aw->s->last_reset));
else
jk_printf(s, JK_STATUS_SHOW_AJP_ROW,
jk_ajp_get_state(aw, l),
@@ -1704,7 +1707,8 @@
status_strfsize(aw->s->transferred, buf_wr),
status_strfsize(aw->s->readed, buf_rd),
aw->s->busy,
- aw->s->max_busy);
+ aw->s->max_busy,
+ (int)difftime(now, aw->s->last_reset));
}
else if (mime == JK_STATUS_MIME_XML) {
@@ -1763,6 +1767,8 @@
}
else
jk_print_xml_att_int(s, off+2, "map_count", map_count);
+ jk_print_xml_att_long(s, off+2, "last_reset_at",
(long)aw->s->last_reset);
+ jk_print_xml_att_int(s, off+2, "last_reset_ago", (int)difftime(now,
aw->s->last_reset));
/* Terminate the tag */
jk_print_xml_stop_elt(s, off, 1);
@@ -1820,6 +1826,8 @@
}
else
jk_printf(s, " map_count=%d", map_count);
+ jk_printf(s, " last_reset_at=%ld", (long)aw->s->last_reset);
+ jk_printf(s, " last_reset_ago=%d", (int)difftime(now,
aw->s->last_reset));
jk_puts(s, "\n");
}
@@ -1873,6 +1881,8 @@
}
else
jk_print_prop_att_int(s, w, name, "map_count", map_count);
+ jk_print_prop_att_long(s, w, name, "last_reset_at",
(long)aw->s->last_reset);
+ jk_print_prop_att_int(s, w, name, "last_reset_ago", (int)difftime(now,
aw->s->last_reset));
}
JK_TRACE_EXIT(l);
@@ -2057,7 +2067,7 @@
if (!hide_lb_summary) {
jk_puts(s, "<table><tr>"
-
"<th>Good</th><th>Degraded</th><th>Bad/Stopped</th><th>Busy</th><th>Max
Busy</th><th>Next Maintenance</th><th>[");
+
"<th>Good</th><th>Degraded</th><th>Bad/Stopped</th><th>Busy</th><th>Max
Busy</th><th>Next Maintenance</th><th>Last Reset</th><th>[");
status_write_uri(s, p, "Hide", JK_STATUS_CMD_UNKNOWN,
JK_STATUS_MIME_UNKNOWN,
NULL, NULL, JK_STATUS_ARG_OPTION_NO_LB_SUMMARY,
0, NULL, l);
jk_puts(s, "]</th></tr>\n<tr>");
@@ -2067,6 +2077,7 @@
jk_printf(s, "<td>%d</td>", lb->s->busy);
jk_printf(s, "<td>%d</td>", lb->s->max_busy);
jk_printf(s, "<td>%d/%d</td>", ms_min, ms_max);
+ jk_printf(s, "<td>%d</td>", (int)difftime(now, lb->s->last_reset));
jk_puts(s, "<td></td></tr>\n</table>\n\n");
}
}
@@ -2091,6 +2102,8 @@
jk_print_xml_att_int(s, 4, "map_count", map_count);
jk_print_xml_att_int(s, 4, "time_to_maintenance_min", ms_min);
jk_print_xml_att_int(s, 4, "time_to_maintenance_max", ms_max);
+ jk_print_xml_att_long(s, 4, "last_reset_at", (long)lb->s->last_reset);
+ jk_print_xml_att_int(s, 4, "last_reset_ago", (int)difftime(now,
lb->s->last_reset));
jk_print_xml_stop_elt(s, 2, 0);
}
@@ -2115,6 +2128,8 @@
jk_printf(s, " map_count=%d", map_count);
jk_printf(s, " time_to_maintenance_min=%d", ms_min);
jk_printf(s, " time_to_maintenance_max=%d", ms_max);
+ jk_printf(s, " last_reset_at=%ld", (long)lb->s->last_reset);
+ jk_printf(s, " last_reset_ago=%d", (int)difftime(now,
lb->s->last_reset));
jk_puts(s, "\n");
}
@@ -2138,6 +2153,8 @@
jk_print_prop_att_int(s, w, name, "map_count", map_count);
jk_print_prop_att_int(s, w, name, "time_to_maintenance_min", ms_min);
jk_print_prop_att_int(s, w, name, "time_to_maintenance_max", ms_max);
+ jk_print_prop_att_long(s, w, name, "last_reset_at",
(long)lb->s->last_reset);
+ jk_print_prop_att_int(s, w, name, "last_reset_ago", (int)difftime(now,
lb->s->last_reset));
}
@@ -3372,6 +3389,7 @@
"<tr><th>RR</th><td>Route redirect</td></tr>\n"
"<tr><th>Cd</th><td>Cluster domain</td></tr>\n"
"<tr><th>Rs</th><td>Recovery scheduled in app. min/max
seconds</td></tr>\n"
+ "<tr><th>LR</th><td>Seconds since last reset of statistics
counters</td></tr>\n"
"</tbody>\n"
"</table>\n");
}
@@ -3840,6 +3858,7 @@
lb_worker_t *lb = NULL;
lb_sub_worker_t *wr = NULL;
ajp_worker_t *aw = NULL;
+ time_t now = 0;
JK_TRACE_ENTER(l);
fetch_worker_and_sub_worker(p, "resetting", &worker, &sub_worker, l);
@@ -3848,6 +3867,7 @@
return JK_FALSE;
}
+ now = time(NULL);
if (jw->type == JK_LB_WORKER_TYPE) {
if (check_valid_lb(s, p, jw, worker, &lb, 0, l) == JK_FALSE) {
JK_TRACE_EXIT(l);
@@ -3860,6 +3880,7 @@
"Status worker '%s' %s lb worker '%s' with all sub
workers",
w->name, "resetting", lb->name);
lb->s->max_busy = 0;
+ lb->s->last_reset = now;
for (i = 0; i < lb->num_of_workers; i++) {
wr = &(lb->lb_workers[i]);
aw = (ajp_worker_t *)wr->worker->worker_private;
@@ -3874,6 +3895,7 @@
aw->s->transferred = 0;
aw->s->readed = 0;
aw->s->max_busy = 0;
+ aw->s->last_reset = now;
}
JK_TRACE_EXIT(l);
return JK_TRUE;
@@ -3900,6 +3922,7 @@
aw->s->transferred = 0;
aw->s->readed = 0;
aw->s->max_busy = 0;
+ aw->s->last_reset = now;
JK_TRACE_EXIT(l);
return JK_TRUE;
}
@@ -3919,6 +3942,7 @@
aw->s->transferred = 0;
aw->s->readed = 0;
aw->s->max_busy = 0;
+ aw->s->last_reset = now;
JK_TRACE_EXIT(l);
return JK_TRUE;
}
Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=701543&r1=701542&r2=701543&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Fri Oct 3
14:43:59 2008
@@ -43,6 +43,9 @@
<br />
<subsection name="Native">
<changelog>
+ <update>
+ Status: Add display of seconds since last statistics reset. (rjung)
+ </update>
<add>
AJP13: Add a configurable retry wait time. (rjung)
</add>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]