nginx日志中$request_time时间异常问题排查

本文介绍了在nginx日志中发现$request_time与实际响应时间不符的问题,通过抓包分析和源码研究,揭示了原因是客户端连接未正常关闭,触发了nginx的延迟关闭机制,导致日志中记录的时间增加了lingering_timeout的值(默认5s)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

女主宣言

    nginx日志分为access_log和error_log,可以用于业务的访问统计、服务排障等。我们可以自定义设置log_format,来记录关注的各项指标。本文主要讲述了一次nginx日志中$request_time时间异常问题的排查过程,希望可以对遇到类似问题的同学有所帮助。

PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!

1

问题描述

    业务反馈自己的服务实际响应速度很快,nginx作为反向代理,在它的access_log中看到的$request_time却在5s以上,而$upstream_response_time不到1s。这之间的时间差是从何而来?

2

排查过程

业务的请求路径

client -> LVS -> nginx -> upstream

    客户端访问业务域名,解析到LVS的VIP后,转发给后端的nginx反向代理,再由nginx转发给后端真实的服务器。

在LVS上抓包查看实际请求时间

    下图只截取了整个流程中连接断开的部分数据包,nginx发出的是端口为80的数据包,客户端请求是端口为23883的数据包。从图中可以看出,nginx的80端口在发送完所有数据后,立即发送了Fin包断开连接,整个过程不超过1s。客户端在收到所有数据后,迟迟没有发出Fin包,而是在大约40s后发送了Rst包将连接断开。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值