Profile FastCGI transport phases
This commit is contained in:
@@ -1224,6 +1224,7 @@ FastCGIServer::read_fgci(Connection& connection)
|
||||
request.resources.params_buffer.size());
|
||||
request.resources.params_buffer.clear();
|
||||
request.flags.params_closed = true;
|
||||
request.stats.time_params = time_precise();
|
||||
//std::cout << "Params " << var_dump(request.params) << "\n";
|
||||
request.flags.status = on_request(request);
|
||||
if (request.flags.status == 0 && !request.in.empty())
|
||||
@@ -1261,6 +1262,7 @@ FastCGIServer::read_fgci(Connection& connection)
|
||||
}
|
||||
} else {
|
||||
request.flags.input_closed = true;
|
||||
request.stats.time_input = time_precise();
|
||||
if (request.flags.params_closed && request.flags.status == 0) {
|
||||
request.flags.status = on_complete(request);
|
||||
request_write_fgci(connection, request_id, request);
|
||||
|
||||
@@ -305,6 +305,8 @@ struct Request {
|
||||
struct Stats {
|
||||
u32 bytes_written = 0;
|
||||
f64 time_init = 0;
|
||||
f64 time_params = 0;
|
||||
f64 time_input = 0;
|
||||
f64 time_start = 0;
|
||||
f64 time_end = 0;
|
||||
u64 mem_high = 0;
|
||||
|
||||
+14
-2
@@ -1145,6 +1145,8 @@ public:
|
||||
u64 parent_pid = 0;
|
||||
u64 request_count = 0;
|
||||
f64 time_init = 0;
|
||||
f64 time_params = 0;
|
||||
f64 time_input = 0;
|
||||
f64 time_start = 0;
|
||||
bool active = false;
|
||||
} request_perf;
|
||||
@@ -1153,12 +1155,15 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
void set_perf_snapshot(u64 worker_pid, u64 parent_pid, u64 request_count, f64 time_init, f64 time_start)
|
||||
void set_perf_snapshot(u64 worker_pid, u64 parent_pid, u64 request_count,
|
||||
f64 time_init, f64 time_params, f64 time_input, f64 time_start)
|
||||
{
|
||||
request_perf.worker_pid = worker_pid;
|
||||
request_perf.parent_pid = parent_pid;
|
||||
request_perf.request_count = request_count;
|
||||
request_perf.time_init = time_init;
|
||||
request_perf.time_params = time_params;
|
||||
request_perf.time_input = time_input;
|
||||
request_perf.time_start = time_start;
|
||||
request_perf.active = true;
|
||||
}
|
||||
@@ -2165,6 +2170,12 @@ private:
|
||||
response["request_count"] = (f64)self->request_perf.request_count;
|
||||
if(self->request_perf.time_start > 0 && self->request_perf.time_init > 0)
|
||||
response["accept_us"] = (f64)((self->request_perf.time_start - self->request_perf.time_init) * 1000000.0);
|
||||
if(self->request_perf.time_params > 0 && self->request_perf.time_init > 0)
|
||||
response["transport_params_us"] = (f64)((self->request_perf.time_params - self->request_perf.time_init) * 1000000.0);
|
||||
if(self->request_perf.time_input > 0 && self->request_perf.time_params > 0)
|
||||
response["transport_input_us"] = (f64)((self->request_perf.time_input - self->request_perf.time_params) * 1000000.0);
|
||||
if(self->request_perf.time_start > 0 && self->request_perf.time_input > 0)
|
||||
response["handler_queue_us"] = (f64)((self->request_perf.time_start - self->request_perf.time_input) * 1000000.0);
|
||||
if(self->request_perf.time_start > 0)
|
||||
response["running_us"] = (f64)((now - self->request_perf.time_start) * 1000000.0);
|
||||
if(self->request_perf.time_init > 0)
|
||||
@@ -3298,7 +3309,8 @@ inline WasmResponse wasm_worker_serve(WasmWorker& worker, const DValue& context_
|
||||
std::chrono::steady_clock::now() - workspace_start).count();
|
||||
if(request)
|
||||
{
|
||||
workspace.set_perf_snapshot(my_pid, (u64)parent_pid, request->server ? request->server->request_count : 0, request->stats.time_init, request->stats.time_start);
|
||||
workspace.set_perf_snapshot(my_pid, (u64)parent_pid, request->server ? request->server->request_count : 0,
|
||||
request->stats.time_init, request->stats.time_params, request->stats.time_input, request->stats.time_start);
|
||||
if(request->stats.time_start > 0 && serve_started > request->stats.time_start)
|
||||
workspace.dispatch_us = (u64)((serve_started - request->stats.time_start) * 1000000.0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user