*) scoreboard/mod_http2: record durations of HTTP/2 requests.
PR 69579 [Pierre Brochard <pierre.brochard.1982@m4x.org>]
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@
1926080 13f79535-47bb-0310-9956-
ffa450edef68
--- /dev/null
+ *) scoreboard/mod_http2: record durations of HTTP/2 requests.
+ PR 69579 [Pierre Brochard <pierre.brochard.1982@m4x.org>]
* 20120211.137 (2.4.63-dev) Add AP_MPMQ_CAN_WAITIO
* 20120211.138 (2.4.63-dev) Add is_host_matchable to proxy_worker_shared
* 20120211.139 (2.4.63-dev) Add dav_get_base_path() to mod_dav
+ * 20211221.140 (2.4.64-dev) Add ap_set_time_process_request() to scoreboard.h
*/
#define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
#ifndef MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MAJOR 20120211
#endif
-#define MODULE_MAGIC_NUMBER_MINOR 139 /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 140 /* 0...n */
/**
* Determine if the server's current MODULE_MAGIC_NUMBER is at least a
AP_DECLARE(int) ap_update_child_status_descr(ap_sb_handle_t *sbh, int status, const char *descr);
AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status);
-
+AP_DECLARE(void) ap_set_time_process_request(ap_sb_handle_t* const sbh,
+ const apr_time_t timebeg,const apr_time_t timeend);
+
AP_DECLARE(int) ap_update_global_status(void);
AP_DECLARE(worker_score *) ap_get_scoreboard_worker(ap_sb_handle_t *sbh);
#include <http_connection.h>
#include <http_log.h>
#include <http_protocol.h>
+#include <scoreboard.h>
#include <mpm_common.h>
/* From here on, the final handling of c2 is done by c1 processing.
* Which means we can give it c1's scoreboard handle for updates. */
c2->sbh = m->c1->sbh;
-
+#if AP_MODULE_MAGIC_AT_LEAST(20211221, 29)
+ ap_set_time_process_request(c2->sbh,conn_ctx->started_at,conn_ctx->done_at);
+#endif
ap_log_cerror(APLOG_MARK, APLOG_TRACE2, 0, c2,
"h2_mplx(%s-%d): request done, %f ms elapsed",
conn_ctx->id, conn_ctx->stream_id,
}
}
+AP_DECLARE(void) ap_set_time_process_request(ap_sb_handle_t* const sbh,
+ const apr_time_t timebeg,const apr_time_t timeend)
+{
+ if (!sbh || sbh->child_num < 0)
+ return;
+
+ worker_score* const ws =
+ &ap_scoreboard_image->servers[sbh->child_num][sbh->thread_num];
+
+ ws->start_time = timebeg;
+ ws->stop_time = ws->last_used = timeend;
+
+ if (ap_extended_status)
+ ws->duration += timeend - timebeg;
+}
+
AP_DECLARE(int) ap_update_global_status(void)
{
#ifdef HAVE_TIMES