Request Time in Nginx Log as always 0.000 for HIT Request
mdounin at mdounin.ru
Mon Aug 3 21:07:10 UTC 2020
On Mon, Aug 03, 2020 at 03:54:15PM -0400, anish10dec wrote:
> In our case response body is of size around 4MB to 8MB and its showing
> Since "request time" is for analyzing the time taken for delivering the
> content to client , we are not able to get the actual value or time taken .
> Even on slow user connection its showing 0.000 .
> Generally it should be much higher as it captures the total time taken for
> delivering last byte of the content to user.
The $request_time variable shows the time from reading the the
first byte of the request from the client to sending the last byte
of the response to the socket buffer. Note the difference: not
deliverying the last byte to the user, but sending the response to
the socket buffer. With large enough socket buffers and/or small
enough responses $request_time can be 0, and usually this is
expected result since all request processing happens within a
single event loop iteration.
In some extreme cases $request_time can be seen to be 0 even if
sending the response is slow and takes significant time: this
might happen if reading from disk is very slow (slower than
sending to the client), so nginx never blocks on sending. Most
often this happens when using sendfile, and the sendfile_max_chunk
directive (http://nginx.org/r/sendfile_max_chunk) can be used to
limit the amount of data sent within a single event loop
iteration. Given the response sizes this is unlikely your case
though, as 4M to 8M looks quite comparable to modern sizes of
socket buffers, especially when using auto-tuning.
More information about the nginx