"ProxyStatus" is "On": add "busy" count to auto mode and show byte
counts in auto mode always in units of kilobytes. [Rainer Jung]
+ *) mod_status: Add cumulated response duration time in milliseconds
+ to auto mode.
+ [Rainer Jung]
+
*) mod_status: Complete the data shown for async MPMs in "auto" mode.
Added number of processes, number of stopping processes and number
of busy and idle workers. [Rainer Jung]
2.4.x patch: http://people.apache.org/~covener/2.4.x-proxy-opt-fn.diff
+1: covener, jim, ylavic
- *) mod_status: Add cumulated response duration time
- in milliseconds.
- trunk: http://svn.apache.org/r1837590
- 2.4.x patch: svn merge -c 1837590 ^/httpd/httpd/trunk .
- (adjust CHANGES and include/ap_mmn.h)
- +1: rjung, jim, ylavic
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
* 20120211.80 (2.4.35-dev) Add new ap_update_global_status() method and
* times field in the global_score structure in
* scoreboard.h.
+ * 20120211.81 (2.4.35-dev) Add new duration field to worker_score struct in
+ * scoreboard.h
*
*/
#ifndef MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MAJOR 20120211
#endif
-#define MODULE_MAGIC_NUMBER_MINOR 80 /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 81 /* 0...n */
/**
* Determine if the server's current MODULE_MAGIC_NUMBER is at least a
apr_off_t bytes, my_bytes, conn_bytes;
apr_off_t bcount, kbcount;
long req_time;
+ apr_time_t duration_global;
int short_report;
int no_table_report;
global_score *global_record;
count = 0;
bcount = 0;
kbcount = 0;
+ duration_global = 0;
short_report = 0;
no_table_report = 0;
count += lres;
bcount += bytes;
+ duration_global += ws_record->duration;
if (bcount >= KBYTE) {
kbcount += (bcount >> 10);
clock_t cpu = gu + gs + gcu + gcs + tu + ts + tcu + tcs;
if (short_report) {
ap_rprintf(r, "Total Accesses: %lu\nTotal kBytes: %"
- APR_OFF_T_FMT "\n",
- count, kbcount);
+ APR_OFF_T_FMT "\nTotal Duration: %"
+ APR_TIME_T_FMT "\n",
+ count, kbcount, duration_global / 1000);
#ifdef HAVE_TIMES
/* Allow for OS/2 not having CPU stats */
ap_rprintf(r, "BytesPerSec: %g\n",
KBYTE * (float) kbcount / (float) up_time);
}
- if (count > 0)
+ if (count > 0) {
ap_rprintf(r, "BytesPerReq: %g\n",
KBYTE * (float) kbcount / (float) count);
+ ap_rprintf(r, "DurationPerReq: %g\n",
+ (float) duration_global / (float) count / 1000.);
+ }
}
else { /* !short_report */
ap_rprintf(r, "<dt>Total accesses: %lu - Total Traffic: ", count);
ap_rputs(" - ", r);
format_byte_out(r, (unsigned long)(KBYTE * (float) kbcount
/ (float) count));
- ap_rputs("/request", r);
+ ap_rprintf(r, "/request - %g ms/request",
+ (float) duration_global / (float) count / 1000.);
}
ap_rputs("</dt>\n", r);