温馨提示×

Debian Nginx日志中慢查询怎么办

小樊
62
2025-08-17 14:57:10
栏目: 智能运维

一、启用慢查询日志

在Nginx配置文件(如/etc/nginx/nginx.conf)中添加或修改以下指令,设置慢查询阈值(如2秒)并指定日志路径:

http {
    slowlog_path /var/log/nginx/slow.log;
    slowlog_timeout 2s;  # 超过2秒的请求会被记录
    log_format slow '$remote_addr - $request - $request_time';  # 自定义日志格式
    access_log /var/log/nginx/slow.log slow;
}

二、分析慢查询日志

  • 命令行工具
    • awk筛选慢查询(如响应时间超过2秒):
      awk '$NF > 2 {print $0}' /var/log/nginx/slow.log
    • sort/uniq统计高频慢查询:
      awk '{print $7}' /var/log/nginx/slow.log | sort | uniq -c | sort -nr
  • 可视化工具
    • 使用GoAccess生成HTML报告,直观查看慢查询趋势。
    • 通过ELK Stack(Elasticsearch+Logstash+Kibana)进行日志分析。

三、优化慢查询

  • 数据库层面(若涉及数据库操作):
    • 为高频查询字段添加索引。
    • 优化SQL语句,避免SELECT *,使用LIMIT限制返回数据量。
  • Nginx配置优化
    • 调整keepalive_timeout(默认75秒,可适当降低)。
    • 启用缓存(如proxy_cache)减少后端请求。
    • 增加worker_processesworker_connections提升并发能力。
  • 系统层面
    • 监控服务器资源(CPU、内存、磁盘I/O),确保无瓶颈。
    • 使用tcpdump+Wireshark抓包分析网络延迟。

四、持续监控与报警

  • 配置Prometheus+Grafana实时监控Nginx性能指标(如请求延迟、错误率),设置慢查询报警阈值。
  • 定期通过logrotate切割日志,避免文件过大影响性能。

参考来源

0