nginx日志request_time 和upstream_response_time区别

管理员 Nginx1 36,71610字数 904阅读3分0秒阅读模式

笔者在根据nginx的accesslog中$request_time进行程序优化时,发现有个接口,直接返回数据,平均的$request_time也比较大。原来$request_time包含了用户数据接收时间,而真正程序的响应时间应该用$upstream_response_time。

下面介绍下2者的差别:文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/

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 。
指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出
响应数据时间。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/

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文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/

是指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/

从上面的描述可以看出,$request_time肯定比$upstream_response_time值大,特别是使用POST方式传递参数时,因为Nginx会把request body缓存住,接受完毕后才会把数据一起发给后端。所以如果用户网络较差,或者传递数据较大时,$request_time会比$upstream_response_time大很多。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/

所以如果使用nginx的accesslog查看php程序中哪些接口比较慢的话,记得在log_format中加入$upstream_response_time。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/ 文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
管理员
  • 本文由 发表于 28/08/2016 11:03:24
  • 转载请务必保留本文链接:https://www.ttlsa.com/nginx/nginx-logs-config-request_time-upstream_response_time/
  • nginx
  • nginx日志
  • request_time
  • upstream_response_time
评论  1  访客  1
    • Aceslup
      Aceslup 4

      耶斯

    评论已关闭!