技术解析

关于 request_time 和 upstream_response_time
0
2021-05-25 13:25:35
idczone

贴一部分 nginx 的 access.log 的数据, 分别是

method, request_time, upstream_response_time, request_time - upstream_response_time

"GET 0.143 1.131 0.988
"GET 0.053 0.053 0
"POST 0.029 0.029 0
"GET 0.037 3.034 2.997
"GET 0.138 0.690 0.552
"POST 0.072 0.072 0
"GET 0.063 3.833 3.77
"GET 0.056 1.055 0.999
"POST 0.029 3.471 3.442
"GET 0.347 0.378 0.031
"GET 0.074 3.899 3.825
"GET 0.077 0.077 0
"GET 0.018 0.018 0
"GET 0.030 0.030 0
"GET 0.034 0.034 0
"GET 0.063 0.063 0
"POST 0.031 0.035 0.004
"POST 0.031 0.031 0
"POST 0.030 0.030 0
"GET 0.077 3.552 3.475
"GET 0.137 0.140 0.003
"POST 0.030 0.033 0.003
"GET 0.285 1.557 1.272
"GET 0.056 0.056 0
"GET 0.076 3.960 抗投诉服务器3.884
"GET 0.076 3.453 3.377
"POST 0.124 0.186 0.062
"HEAD - 0.000 0
"GET 0.007 1.006 0.999
"POST 0.031 0.925 0.894
"POST 0.032 0.032 0
"GET 0.048 0.675 0.627
"POST 0.030 0.030 0

想了解一下在 cpu, 内存都没满的情况下, 为什么 request_time 和 upstream_response_time 在部分请求中相差这么大.

以我现在的了解, request_time 是外网请求进出 nginx 的时间

而 upstream_response_time 是 nginx 将请求交给后端服务器处理到返回的时间


因为 client 和 server 之间的网络情况各不相同吧?

是不是两个时间反了? request_time>upstream_response_time 才对
因为 nginx 有 buffer ,在返回数据量不大的情况下,数据全部进 buffer ,关闭上游连接,然后慢慢发给 client

没有反啊 第四列数据都是大于等于 0 的

诶? 什么意思

request_time 是 nginx 接到 request 的时间,然后 nginx 会等 client 把全部的数据发过来存 buffer ,再交给 upstream 。 client 和 server 之间的网络情况各不相同,这会导致这个时间差各不相同。

部分请求需要 秒 级别的返回 这算是正常么

具体讲的可能有点不对,但大致是这个意思

第一行 0.143 1.131 你说哪个大?

我认为很正常,国内的网络,某些时候跨运营商跳来跳去能访问到已经很不容易了。

啊.. 才发现 写反了..
method, upstream_response_time, request_time, request_time - upstream_response_time

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服