温馨提示×

如何定位linux慢日志

小樊
45
2026-09-05 13:26:07
栏目: 智能运维

在 Linux 里常说的“慢日志”通常有几种不同场景,下面按最常见三类给你一套定位思路和命令。


一、系统整体变慢(CPU / 内存 / IO)

1️⃣ 先看整体负载

uptime
top
htop

关注:

  • load average 是否远高于 CPU 核数
  • 哪个进程 CPU / MEM 高

2️⃣ 磁盘 IO 是否瓶颈

iostat -x 1

重点关注:

  • %util 接近 100%
  • await / svctm 很大

3️⃣ 内存 & 交换

free -h
vmstat 1
  • 频繁 swap → 内存不足

4️⃣ 历史慢点(曾经卡过)

sar -u -r -d -n DEV 1 3

(需安装 sysstat


二、MySQL 慢日志(最常见“慢日志”)

1️⃣ 确认慢日志是否开启

SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'slow_query_log_file';
SHOW VARIABLES LIKE 'long_query_time';

2️⃣ 开启慢日志(如未开)

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;

3️⃣ 查看慢日志

tail -f /var/log/mysql/slow.log

4️⃣ 分析慢 SQL

mysqldumpslow -s t /var/log/mysql/slow.log

三、Web / 应用请求慢(Nginx / 接口)

Nginx 慢请求

nginx.conf 中:

log_format main '$request_time $upstream_response_time $request';
access_log /var/log/nginx/access.log main;

查看慢请求:

awk '$1 > 1 {print}' /var/log/nginx/access.log

应用层(Java / Python / Go)

  • APM(SkyWalking / Prometheus)
  • 或开启框架自身慢日志(如 Spring、Django)

四、快速定位“是谁慢”的黄金套路

top        # 谁占资源
iostat     # 是否 IO 慢
netstat    # 是否网络卡
dmesg      # 是否有硬件/内核异常
journalctl -p err

如果你能告诉我:

  • 数据库慢系统卡,还是 某个服务响应慢
  • 用的什么系统 / 软件

我可以直接给你针对性的定位命令和排查流程

0