spacewander commented on issue #5146:
URL: https://github.com/apache/apisix/issues/5146#issuecomment-928919399


   For somebody who doesn't read the link, here is Maxim Dounin's answer:
   
   > This is because now on Linux $upstream_response_time
   is counted via clock_gettime(CLOCK_MONOTONIC_COARSE), and with
   typical values of CONFIG_HZ=250, it may be up to 4
   milliseconds. At the same time, the time to calculate $request_time
   is not a monotonous time, but the result of gettimeofday(), i.e.
   that is, the time according to the wall clock. So in some cases
   $upstream_response_time may be slightly larger than
   $request_time.
   
   https://forum.nginx.org/read.php?21,284448,284450#msg-284450
   
   Here is part of my letter sent to Nginx devel mail list this morning, which 
also give other details:
   
   > Currently, the request_time uses ngx_timeofday to get the time, which
   finally will call gettimeofday. Meanwhile, the upstream_x_time series
   uses ngx_current_msec to calculate the time, which finally will call
   ngx_monotonic_time.
   >
   > On Linux, the gettimeofday will call clock_gettime(CLOCK_REALTIME,
   &ts) while the ngx_monotonic_time will call
   clock_gettime(CLOCK_MONOTONIC_COARSE, &ts).
   >
   > So the request_time uses CLOCK_REALTIME and the upstream_x_time series
   uses CLOCK_MONOTONIC_COARSE. As they are different sources, 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to