nginx access日志log_format优化之request_time 和upstream_response_time差别
- 1、request_time
- 2、upstream_response_time
- 3、比较
- 4、结论
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
建立连接开始到接受完数据然后关闭连接为止的时间。
3、比较
- 从上面的描述可以看出,
$request_time
肯定大于等于
$upstream_response_time
,特别是使用POST
方式传递参数时,因为Nginx
会把request body
缓存住,接受完毕后才会把数据一起发给后端。所以如果用户网络较差,或者传递数据较大时,$request_time
会比$upstream_response_time
大很多。 - 所以如果使用
nginx
的accesslog
查看php
程序中哪些接口比较慢的话,记得在log_format
中加入$upstream_response_time
。
[ 根据引贴对官网描述的翻译 ]
upstream_response_time
: 从 Nginx 建立连接 到 接收完数据并关闭连接request_time
: 从 接受用户请求的第一个字节 到 发送完响应数据
[ 如果把整个过程补充起来的话 应该是 ]
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 用户请求
的时间
4、结论
如果用户端网络状况较差 或者传递数据本身较大
再考虑到 当使用
POST
方式传参时Nginx
会先把request body
缓存起来而这些耗时都会累积到
1 用户请求
头上去这样就解释了
为什么
request_time
有可能会比upstream_response_time
要大因为用户端的状况通常千差万别 无法控制
所以并不应该被纳入到测试和调优的范畴里面
更值得关注的应该是
upstream_response_time
所以在实际工作中 如果想要关心哪些请求比较慢的话
记得要在配置文件的 log_format 中加入 $upstream_response_time
nginx access日志log_format优化之request_time 和upstream_response_time差别相关推荐
- nginx access日志按时间进行分割
按小时过滤日志: #!/bin/bash #file log path log_file='/var/log/nginx/access.log'last_hour=1 # start time sta ...
- ELK 分析 nginx access 日志
注意:修改配置后建议重新创建index 1.nginx 日志文件格式 1 2 3 log_format elk "$http_clientip | $http_x_forwarded_for ...
- ELK之日志收集filebeat,并对nginx,tomcat access日志JSON格式化
2019独角兽企业重金招聘Python工程师标准>>> 一:ELK日志收集器组件filebeat下载 官方下载地址:https://www.elastic.co/downloads/ ...
- Ekl去记录nginx的日志
什么是 ELK? ELK 是 Elasticsearch.Logstash.Kibana 三大开源框架首字母大写简称. Elasticsearch 是强大的数据搜索引擎,是分布式.通过 restful ...
- nginx在linux中查看日志信息,nginx查看日志
nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 error log 则是记录服务器错误日 ...
- filebeat获取nginx的access日志配置
filebeat获取nginx的access日志配置产生nginx日志的服务器即生产者服务器配置: 拿omp.chinasoft.com举例: 1.nginx.conf主配置文件添加日志格式log_f ...
- 转-nginx日志log_format的详细参数
2019独角兽企业重金招聘Python工程师标准>>> nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定 ...
- log_format为nginx设置日志格式
nginx服务器日志相关指令主要有两条 1.一条是log_format,用来设置日志格式. 2. 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件 ...
- Nginx输出header到access日志文件
Nginx输出header到access日志文件 背景 配置 nginx配置如下 http块配置如下 日志效果如下 背景 为了排查线上的bug,需要在nginx的日志中,打印客户端上传上来的heade ...
- 【Nginx 日志配置】【访问日志log_format】【错误日志error_log 指令】【Nginx的日志轮转】
文章目录 Nginx 日志配置 `log_format` 指令中常用的一些变量: 访问日志 案例 可以配置段:`http`, `stream`, `server`, `location`作用域. er ...
最新文章
- android context继承关系,android中Context深入详解
- HTML5 Canvas像素处理常用接口
- Ubuntu20.04 服务器版安装
- 英雄联盟祖安服务器要维护多久,祖安玩家的春天!英雄联盟将回归队内语音,娱乐玩家遭殃了?...
- Shiro学习总结(4)——Shrio登陆验证实例详细解读
- Java中的ArrayList类和LinkedList
- css3 实现图片旋转
- 如何统计项目代码行数
- python批量查询(excel)数据
- 安卓手机管理器_Kindle 传书最简单的方式:安卓/苹果手机都可以一键传书至Kindle!...
- 编写微信聊天机器人3《聊天精灵WeChatGenius》:使用Xposed来hook微信,找到微信进程。
- 10年,从一个月薪2500的设备维修工,迫于压力转行,直到成为自动化测试专家···
- C#(pronounced: see sharp) 与 .NET
- 如何设置html的背景效果,背景图片的透明度如何设置(CSS)
- houdini 摄像机使用
- 微信有没有免费提现服务器,微信终于可以免费提现了,速领!
- PAT练习 骨牌铺方格
- APS排程软件自动分配任务到多台机台同时生产
- 什么是JAVA人才外派服务?
- Keynote特效案例集
热门文章
- 3802.消灭数组-AcWing题库
- 题目263-精 挑 细 选
- 【PAT B1019/A1069】数字黑洞
- c++ 读文件_C语言文件操作大全
- 你的手机浏览器不支持webgle_中国联通回应“逐渐关闭2G、3G网络”:系用户手机不支持...
- php session 加密,php session cookie加密实例
- hbuilder怎么设置网页的大小_怎么免费将图片转成PDF?这个方法超简单
- 覆盖php扩展后服务挂了,PHP 扩展管理
- 等高线生成地形_等高线一键变地形模型
- 45个python入门案例_给Python小白看的10个使用案例,入门Python就在这里了