1、request_time
官網描述:request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 。 指的就是從接受用戶請求的第一個字節到發送完響應數據的時間,即包括接收請求數據時間、程序響應時間、輸出 響應數據時間。
2、upstream_response_time
官網描述:keeps times of responses obtained from upstream servers; times are kept in seconds with a milliseconds resolution. Several response times are separated by commas and colons like addresses in the $upstream_addr variable
是指從Nginx向后端(php-cgi)建立連接開始到接受完數據然后關閉連接為止的時間。
從上面的描述可以看出,$request_time肯定比$upstream_response_time值大,特別是使用POST方式傳遞參數時,因為Nginx會把request body緩存住,接受完畢后才會把數據一起發給后端。所以如果用戶網絡較差,或者傳遞數據較大時,$request_time會比$upstream_response_time大很多。
根據引貼對官網描述的翻譯:
upstream_response_time:從 Nginx 建立連接 到 接收完數據並關閉連接
request_time:從 接受用戶請求的第一個字節 到 發送完響應數據
2、場景
2.1 流程說明
如果把整個過程補充起來的話 應該是:
[1用戶請求][2建立 Nginx 連接][3發送響應][4接收響應][5關閉 Nginx 連接]
那么 upstream_response_time 就是 2+3+4+5
但是 一般這里面可以認為 [5關閉 Nginx 連接] 的耗時接近 0
所以 upstream_response_time 實際上就是 2+3+4
而 request_time 是 1+2+3+4
二者之間相差的就是 [1用戶請求]的時間。
來個網上的圖說明情況:
參考網址:https://blog.csdn.net/zzhongcy/article/details/105819628