Loading CHANGES +3 −0 Changes for CHANGES: 3 added lines, 0 removed lines. Original line number Diff line number Diff line -*- coding: utf-8 -*- Changes with Apache 2.5.1 *) mod_status: Add cumulated response duration time in milliseconds. [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] Loading include/ap_mmn.h +3 −1 Changes for include/ap_mmn.h: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -589,6 +589,8 @@ * 20180720.2 (2.5.1-dev) Add optional function declaration for * ap_proxy_balancer_get_best_worker to mod_proxy.h. * 20180720.3 (2.5.1-dev) Add client64 to worker_share * 20180720.4 (2.5.1-dev) Add new duration field to worker_score struct in * scoreboard.h * */ Loading @@ -597,7 +599,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20180720 #endif #define MODULE_MAGIC_NUMBER_MINOR 3 /* 0...n */ #define MODULE_MAGIC_NUMBER_MINOR 4 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a Loading include/scoreboard.h +1 −0 Changes for include/scoreboard.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ struct worker_score { char vhost[32]; /* What virtual host is being accessed? */ char protocol[16]; /* What protocol is used on the connection? */ char client64[64]; apr_time_t duration; }; typedef struct { Loading modules/generators/mod_status.c +25 −11 Changes for modules/generators/mod_status.c: 25 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -193,6 +193,8 @@ static int status_handler(request_rec *r) apr_off_t bytes, my_bytes, conn_bytes; apr_off_t bcount, kbcount; long req_time; apr_time_t duration_global; apr_time_t duration_slot; int short_report; int no_table_report; worker_score *ws_record; Loading Loading @@ -232,6 +234,7 @@ static int status_handler(request_rec *r) count = 0; bcount = 0; kbcount = 0; duration_global = 0; short_report = 0; no_table_report = 0; Loading Loading @@ -374,6 +377,7 @@ static int status_handler(request_rec *r) count += lres; bcount += bytes; duration_global += ws_record->duration; if (bcount >= KBYTE) { kbcount += (bcount >> 10); Loading Loading @@ -461,8 +465,9 @@ static int status_handler(request_rec *r) if (ap_extended_status) { 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 */ Loading @@ -482,14 +487,17 @@ static int status_handler(request_rec *r) 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); format_kbyte_out(r, kbcount); ap_rputs("</dt>\n", r); ap_rprintf(r, " - Total Duration: %" APR_TIME_T_FMT "</dt>\n", duration_global / 1000); #ifdef HAVE_TIMES /* Allow for OS/2 not having CPU stats */ Loading @@ -507,13 +515,15 @@ static int status_handler(request_rec *r) format_byte_out(r, (unsigned long)(KBYTE * (float) kbcount / (float) up_time)); ap_rputs("/second - ", r); ap_rputs("/second", r); } if (count > 0) { 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); Loading Loading @@ -691,7 +701,7 @@ static int status_handler(request_rec *r) #ifdef HAVE_TIMES "<th>CPU\n</th>" #endif "<th>SS</th><th>Req</th>" "<th>SS</th><th>Req</th><th>Dur</th>" "<th>Conn</th><th>Child</th><th>Slot</th>" "<th>Client</th><th>Protocol</th><th>VHost</th>" "<th>Request</th></tr>\n\n", r); Loading Loading @@ -723,6 +733,7 @@ static int status_handler(request_rec *r) bytes = ws_record->bytes_served; my_bytes = ws_record->my_bytes_served; conn_bytes = ws_record->conn_bytes; duration_slot = ws_record->duration; if (ws_record->pid) { /* MPM sets per-worker pid and generation */ worker_pid = ws_record->pid; worker_generation = ws_record->generation; Loading Loading @@ -789,7 +800,7 @@ static int status_handler(request_rec *r) #ifdef HAVE_TIMES "u%g s%g cu%g cs%g" #endif "\n %ld %ld (", "\n %ld %ld %" APR_TIME_T_FMT "(", #ifdef HAVE_TIMES ws_record->times.tms_utime / tick, ws_record->times.tms_stime / tick, Loading @@ -798,7 +809,8 @@ static int status_handler(request_rec *r) #endif (long)apr_time_sec(nowtime - ws_record->last_used), (long) req_time); (long) req_time, duration_slot / 1000); format_byte_out(r, conn_bytes); ap_rputs("|", r); Loading Loading @@ -878,7 +890,7 @@ static int status_handler(request_rec *r) #ifdef HAVE_TIMES "<td>%.2f</td>" #endif "<td>%ld</td><td>%ld", "<td>%ld</td><td>%ld</td><td>%" APR_TIME_T_FMT, #ifdef HAVE_TIMES (ws_record->times.tms_utime + ws_record->times.tms_stime + Loading @@ -887,7 +899,8 @@ static int status_handler(request_rec *r) #endif (long)apr_time_sec(nowtime - ws_record->last_used), (long)req_time); (long)req_time, duration_slot / 1000); ap_rprintf(r, "</td><td>%-1.1f</td><td>%-2.2f</td><td>%-2.2f\n", (float)conn_bytes / KBYTE, (float) my_bytes / MBYTE, Loading Loading @@ -923,6 +936,7 @@ static int status_handler(request_rec *r) "<tr><th>SS</th><td>Seconds since beginning of most recent request</td></tr>\n \ <tr><th>Req</th><td>Milliseconds required to process most recent request</td></tr>\n \ <tr><th>Dur</th><td>Sum of milliseconds required to process all requests</td></tr>\n \ <tr><th>Conn</th><td>Kilobytes transferred this connection</td></tr>\n \ <tr><th>Child</th><td>Megabytes transferred this child</td></tr>\n \ <tr><th>Slot</th><td>Total megabytes transferred this slot</td></tr>\n \ Loading server/scoreboard.c +3 −0 Changes for server/scoreboard.c: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -641,6 +641,9 @@ AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status) } else if (status == STOP_PREQUEST) { ws->stop_time = ws->last_used = apr_time_now(); if (ap_extended_status) { ws->duration += ws->stop_time - ws->start_time; } } } Loading Loading
CHANGES +3 −0 Changes for CHANGES: 3 added lines, 0 removed lines. Original line number Diff line number Diff line -*- coding: utf-8 -*- Changes with Apache 2.5.1 *) mod_status: Add cumulated response duration time in milliseconds. [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] Loading
include/ap_mmn.h +3 −1 Changes for include/ap_mmn.h: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -589,6 +589,8 @@ * 20180720.2 (2.5.1-dev) Add optional function declaration for * ap_proxy_balancer_get_best_worker to mod_proxy.h. * 20180720.3 (2.5.1-dev) Add client64 to worker_share * 20180720.4 (2.5.1-dev) Add new duration field to worker_score struct in * scoreboard.h * */ Loading @@ -597,7 +599,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20180720 #endif #define MODULE_MAGIC_NUMBER_MINOR 3 /* 0...n */ #define MODULE_MAGIC_NUMBER_MINOR 4 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a Loading
include/scoreboard.h +1 −0 Changes for include/scoreboard.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ struct worker_score { char vhost[32]; /* What virtual host is being accessed? */ char protocol[16]; /* What protocol is used on the connection? */ char client64[64]; apr_time_t duration; }; typedef struct { Loading
modules/generators/mod_status.c +25 −11 Changes for modules/generators/mod_status.c: 25 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -193,6 +193,8 @@ static int status_handler(request_rec *r) apr_off_t bytes, my_bytes, conn_bytes; apr_off_t bcount, kbcount; long req_time; apr_time_t duration_global; apr_time_t duration_slot; int short_report; int no_table_report; worker_score *ws_record; Loading Loading @@ -232,6 +234,7 @@ static int status_handler(request_rec *r) count = 0; bcount = 0; kbcount = 0; duration_global = 0; short_report = 0; no_table_report = 0; Loading Loading @@ -374,6 +377,7 @@ static int status_handler(request_rec *r) count += lres; bcount += bytes; duration_global += ws_record->duration; if (bcount >= KBYTE) { kbcount += (bcount >> 10); Loading Loading @@ -461,8 +465,9 @@ static int status_handler(request_rec *r) if (ap_extended_status) { 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 */ Loading @@ -482,14 +487,17 @@ static int status_handler(request_rec *r) 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); format_kbyte_out(r, kbcount); ap_rputs("</dt>\n", r); ap_rprintf(r, " - Total Duration: %" APR_TIME_T_FMT "</dt>\n", duration_global / 1000); #ifdef HAVE_TIMES /* Allow for OS/2 not having CPU stats */ Loading @@ -507,13 +515,15 @@ static int status_handler(request_rec *r) format_byte_out(r, (unsigned long)(KBYTE * (float) kbcount / (float) up_time)); ap_rputs("/second - ", r); ap_rputs("/second", r); } if (count > 0) { 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); Loading Loading @@ -691,7 +701,7 @@ static int status_handler(request_rec *r) #ifdef HAVE_TIMES "<th>CPU\n</th>" #endif "<th>SS</th><th>Req</th>" "<th>SS</th><th>Req</th><th>Dur</th>" "<th>Conn</th><th>Child</th><th>Slot</th>" "<th>Client</th><th>Protocol</th><th>VHost</th>" "<th>Request</th></tr>\n\n", r); Loading Loading @@ -723,6 +733,7 @@ static int status_handler(request_rec *r) bytes = ws_record->bytes_served; my_bytes = ws_record->my_bytes_served; conn_bytes = ws_record->conn_bytes; duration_slot = ws_record->duration; if (ws_record->pid) { /* MPM sets per-worker pid and generation */ worker_pid = ws_record->pid; worker_generation = ws_record->generation; Loading Loading @@ -789,7 +800,7 @@ static int status_handler(request_rec *r) #ifdef HAVE_TIMES "u%g s%g cu%g cs%g" #endif "\n %ld %ld (", "\n %ld %ld %" APR_TIME_T_FMT "(", #ifdef HAVE_TIMES ws_record->times.tms_utime / tick, ws_record->times.tms_stime / tick, Loading @@ -798,7 +809,8 @@ static int status_handler(request_rec *r) #endif (long)apr_time_sec(nowtime - ws_record->last_used), (long) req_time); (long) req_time, duration_slot / 1000); format_byte_out(r, conn_bytes); ap_rputs("|", r); Loading Loading @@ -878,7 +890,7 @@ static int status_handler(request_rec *r) #ifdef HAVE_TIMES "<td>%.2f</td>" #endif "<td>%ld</td><td>%ld", "<td>%ld</td><td>%ld</td><td>%" APR_TIME_T_FMT, #ifdef HAVE_TIMES (ws_record->times.tms_utime + ws_record->times.tms_stime + Loading @@ -887,7 +899,8 @@ static int status_handler(request_rec *r) #endif (long)apr_time_sec(nowtime - ws_record->last_used), (long)req_time); (long)req_time, duration_slot / 1000); ap_rprintf(r, "</td><td>%-1.1f</td><td>%-2.2f</td><td>%-2.2f\n", (float)conn_bytes / KBYTE, (float) my_bytes / MBYTE, Loading Loading @@ -923,6 +936,7 @@ static int status_handler(request_rec *r) "<tr><th>SS</th><td>Seconds since beginning of most recent request</td></tr>\n \ <tr><th>Req</th><td>Milliseconds required to process most recent request</td></tr>\n \ <tr><th>Dur</th><td>Sum of milliseconds required to process all requests</td></tr>\n \ <tr><th>Conn</th><td>Kilobytes transferred this connection</td></tr>\n \ <tr><th>Child</th><td>Megabytes transferred this child</td></tr>\n \ <tr><th>Slot</th><td>Total megabytes transferred this slot</td></tr>\n \ Loading
server/scoreboard.c +3 −0 Changes for server/scoreboard.c: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -641,6 +641,9 @@ AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status) } else if (status == STOP_PREQUEST) { ws->stop_time = ws->last_used = apr_time_now(); if (ap_extended_status) { ws->duration += ws->stop_time - ws->start_time; } } } Loading