温馨提示×

nginx日志怎么看响应时间

小樊
41
2026-10-23 04:19:24
栏目: 编程语言

在 Nginx 中查看响应时间(请求处理耗时),通常有两种方式:看访问日志里的字段,或者用其他方式统计。下面按常见场景给你说明。


一、在 Nginx 访问日志中查看响应时间(最常用)

1️⃣ Nginx 日志里的响应时间变量

Nginx 本身提供几个和耗时相关的变量:

变量 含义
$request_time 总响应时间(从客户端建立连接,到 Nginx 发送完响应)
$upstream_response_time 后端响应时间(仅反向代理,包含连接+处理)
$upstream_connect_time 连接后端耗时
$upstream_header_time 后端返回响应头耗时

✅ 最常用的是 $request_time


2️⃣ 修改 Nginx 日志格式(关键步骤)

默认日志格式通常没有响应时间,需要自定义 log_format。

示例(nginx.conf):

http {
    log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status '
                    'rt=$request_time urt=$upstream_response_time';

    access_log /var/log/nginx/access.log main;
}

然后平滑重启:

nginx -s reload

日志示例:

192.168.1.10 - - [12/Jan/2026:10:00:00 +0800] "GET /api/test HTTP/1.1" 200 rt=0.123 urt=0.100

解释:

  • rt=0.123 → 总响应时间 0.123 秒
  • urt=0.100 → 后端耗时 0.1 秒

二、直接分析现有日志(不修改配置)

如果日志里已经有响应时间字段,可以直接统计。

1️⃣ 查看最慢的请求(Top 10)

awk '{print $NF}' access.log | sort -nr | head -10

(假设响应时间在最后一位)


2️⃣ 统计平均响应时间

awk '{sum+=$NF; n++} END {print sum/n}' access.log

三、用 goaccess 可视化看响应时间(推荐)

goaccess access.log -o report.html --log-format=COMBINED

支持:

  • 平均响应时间
  • 慢请求排名
  • 实时统计

四、反向代理场景特别说明

如果你是:

用户 → Nginx → 后端(Java / PHP / Python)

那么:

  • request_time ≠ 后端时间
  • 网络 + Nginx 处理也会算进去
  • 排查慢接口优先看 upstream_response_time

五、简单结论

✅ 最快方法

在 log_format 里加 $request_time,然后看日志

✅ 排查后端慢

看 $upstream_response_time

✅ 不想改配置

用 goaccess 或 awk 统计


如果你愿意,可以把你的 Nginx 日志格式贴出来,我可以直接告诉你该怎么看、怎么改。

0 踩