debian

Debian Nginx日志中慢查询分析方法

小樊
33
2025-12-22 09:04:22
栏目: 智能运维

Debian Nginx日志中慢查询分析方法

一 概念澄清与前置准备

二 配置日志以输出耗时字段

http {
  log_format  main_ext  '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent" '
                      'rt=$request_time uct=$upstream_connect_time urt=$upstream_response_time';
  access_log  /var/log/nginx/access.log  main_ext;
}
# 修改后检查并重载
sudo nginx -t && sudo systemctl reload nginx

三 命令行快速定位慢请求

tail -f /var/log/nginx/access.log | \
  awk '$NF > 1 {printf "%.3fs %s %s %s\n", $NF, $4, $7, $1}' | sort -k1 -nr
awk '{print $NF, $4, $7}' /var/log/nginx/access.log | sort -k1 -nr | head -10
awk '$9 >= 500 {print $NF, $4, $7}' /var/log/nginx/access.log | sort -k1 -nr | head -10
awk '{url=$7; sum[url]+=$NF; cnt[url]++} END {for(u in sum) printf "%.3f %d %s\n", sum[u]/cnt[u], cnt[u], u}' \
  /var/log/nginx/access.log | sort -k1 -nr | head
awk '$NF > 2 {split($4, a, ":"); h=a[2]; slow[h]++} END {for(H in slow) print H, slow[H]}' \
  /var/log/nginx/access.log | sort

四 可视化与实时监控工具

cat /var/log/nginx/access.log | \
  docker run --rm -i diyan/goaccess \
    --time-format='%H:%M:%S' --date-format='%d/%b/%Y' \
    --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u"' > report.html
pip install ngxtop
ngxtop -c /etc/nginx/nginx.conf -t 1

五 定位瓶颈与优化建议

0
看了该问题的人还看了