Skip to content

Commit 98161c8

Browse files
committed
Improve internal metrics to account for Keep-Alive.
1 parent 217c49e commit 98161c8

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/http/server/mod.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,18 @@ pub trait Server: Send + Clone {
5858
let mut time_start = time_start;
5959
let mut stream = BufferedStream::new(stream);
6060
debug!("accepted connection");
61+
let mut first = true;
6162
loop { // A keep-alive loop, condition at end
62-
let time_spawned = precise_time_ns();
63+
let mut time_spawned = precise_time_ns();
6364
let (request, err_status) = Request::load(&mut stream);
6465
let time_request_made = precise_time_ns();
66+
if !first {
67+
// Subsequent requests on this connection have no spawn time.
68+
// Moreover we cannot detect the time spent parsing the request as we have
69+
// not exposed the time when the first byte was received.
70+
time_start = time_request_made;
71+
time_spawned = time_request_made;
72+
}
6573
let mut response = box ResponseWriter::new(&mut stream, request);
6674
let time_response_made = precise_time_ns();
6775
match err_status {
@@ -102,12 +110,10 @@ pub trait Server: Send + Clone {
102110
let time_finished = precise_time_ns();
103111
child_perf_sender.send((time_start, time_spawned, time_request_made, time_response_made, time_finished));
104112

105-
// Subsequent requests on this connection have no spawn time
106-
time_start = time_finished;
107-
108113
if request.close_connection {
109114
break;
110115
}
116+
first = false;
111117
}
112118
});
113119
}

0 commit comments

Comments
 (0)