当前位置:首页>Linux>别再只会用 top 了!这 5 个 Linux 性能排查命令才是救命稻草

别再只会用 top 了!这 5 个 Linux 性能排查命令才是救命稻草

  • 2026-06-29 21:31:18
别再只会用 top 了!这 5 个 Linux 性能排查命令才是救命稻草

别再只会用 top 了!这 5 个 Linux 性能排查命令才是救命稻草

一、问题背景

线上系统出问题时,90% 的初中级运维第一时间想到的就是 top。但 top 只能告诉你 CPU 占用高的几个进程、内存总量使用率,至于"为什么 CPU 高"、“为什么 IO 高”、“为什么网卡跑满了”、“为什么系统慢但 CPU 不高”,top 给不了答案。

真实的故障排查场景:

  • 应用突然变慢,top 看 CPU 不到 10%,IO 也正常,但接口 P99 涨了 10 倍
  • 数据库响应慢,但磁盘 IO util 不到 30%
  • 内存没满但系统触发 OOM kill
  • 网络抖但 iftop 看流量不大
  • 应用进程数没变但 RPS 上不去

这些场景必须用更专业的工具才能定位:vmstat 看系统级整体指标,mpstat/pidstat 看每个 CPU 和每个进程的统计,iostat 看磁盘 IO,sar 看历史,perf/bpftrace 看内核热点。

这一篇不讲虚的,全部围绕"现象 → 命令 → 输出 → 判断 → 修复 → 验证 → 回滚"展开,把 5 个真正救命的命令讲透。

二、适用场景

  • 应用响应慢但 CPU 不高
  • 数据库 IO 抖动
  • 内存使用异常,疑似泄漏
  • 网络延迟或丢包
  • 系统卡顿但 top 看不出
  • 容器内性能问题
  • 多租户争抢资源
  • 性能基线建立与历史回溯
  • 容量规划
  • 性能退化复盘
  • 应用上线前压测
  • 业务高峰前巡检
  • 数据库慢查询排查
  • 内核参数调优
  • 性能监控指标设计

三、核心知识点

3.1 性能排查的五个层次

性能问题可以从五个层次看:

  1. 系统级(system-wide):vmstat、mpstat、sar
  2. CPU 级(per-CPU):mpstat
  3. 进程级(per-process):pidstat、top、ps
  4. 磁盘 IO:iostat、iotop
  5. 网络:sar、nicstat、tcpdump

3.2 性能排查常用方法论

USE 方法(Brendan Gregg):

  • Utilization:资源利用率
  • Saturation:资源饱和度
  • Errors:错误数

对每个资源(CPU、内存、磁盘、网络)依次看 USE 三个指标。

3.3 5 个救命命令清单

  • vmstat:系统整体状态(CPU、内存、IO、system)
  • mpstat:每个 CPU 的统计
  • pidstat:每个进程的 CPU/内存/IO/上下文切换
  • iostat:磁盘 IO 统计
  • sar:历史性能数据

再加上 top 作为补充,每个命令各司其职。

3.4 何时用哪个命令

场景
命令
整体系统状态
vmstat
多核 CPU 均衡
mpstat
哪个进程消耗资源
pidstat
磁盘 IO 是否瓶颈
iostat
性能历史数据
sar
内核热点
perf

3.5 关键性能指标

CPU:

  • us(user):用户态 CPU 占比
  • sy(system):内核态 CPU 占比
  • wa(iowait):等待 IO 的 CPU 时间
  • id(idle):空闲
  • st(steal):被虚拟机偷走

内存:

  • swpd:虚拟内存使用量
  • free:空闲
  • buff/cache:缓冲/缓存
  • si/so:swap in/out

IO:

  • bi/bo:block in/out
  • await:单次 IO 平均等待(毫秒)
  • svctm:单次 IO 服务时间(已废弃,参考 util)
  • %util:设备利用率

进程:

  • cswch/s:自愿上下文切换
  • nvcswch/s:非自愿上下文切换
  • minflt/s:minor fault
  • majflt/s:major fault

四、整体排查或实施思路

性能排查按层次往下走:

  1. 系统层:vmstat 1 看 CPU/IO/内存整体
  2. CPU 层:mpstat -P ALL 1 看每核负载
  3. 进程层:pidstat -u -r -d 1 看每个进程
  4. 设备层:iostat -xz 1 看磁盘
  5. 历史层:sar 看过去

每一步都能确认或排除一类根因。

排查套路:

  • CPU 高:vmstat 看 us/sy → mpstat 看单核 → pidstat 看进程 → perf 看热点
  • IO 高:vmstat 看 wa/bi/bo → iostat 看设备 → pidstat -d 看进程 → iotop 实时
  • 内存高:vmstat 看 si/so/free → pidstat -r 看进程 RSS → smem 看真实占用
  • 网络高:sar -n DEV 看流量 → nicstat 看包量 → ss 看连接 → tcpdump 抓包

五、实战步骤

5.1 现象:应用响应慢,top 看 CPU 不高

5.1.1 初步判断

bash
top -bn1 | head -20uptime

预期输出:

top - 16:00:00 up 100 days,  1 user,  load average: 8.00, 8.00, 8.00

判断:load average 高(>CPU 核数)但 top 看 CPU% 不高 → 大概率 IO 阻塞。

5.1.2 命令检查

bash
vmstat 1 10

预期输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 1  8      0 1024000 204800 4096000    0    0     0   100  1000  2000  5  3  10 82  0

判断:

  • b 列 = 8:有 8 个进程在等 IO
  • wa = 82:82% CPU 都在等 IO
  • bi/bo 不一定高,但 b 高说明 IO 队列长

5.1.3 关键指标

  • b 列(blocked)
  • wa 列(iowait)
  • bi/bo(每秒读写 block 数)

5.1.4 根因定位

bash
iostat -xz 1 5

预期输出:

Device: rrqm/s wrqm/s  r/s   w/s  rkB/s    wkB/s  avgrq-sz  avgqu-sz  await r_await w_await svctm  %utilsda       0     0    0   50    0      400     16.0     32.0    640.0    0.0    640.0   0.5   100.00

判断:

  • %util = 100%:磁盘满了
  • await = 640ms:单次 IO 等待极高
  • avgqu-sz = 32:队列 32 个 IO 在等

根因:磁盘 IO 已经饱和,可能是数据库在做大量随机写。

5.1.5 修复

  • 看是哪个进程在写:pidstat -d 1
  • 把数据库 binlog 单独放慢盘
  • 加内存,让 IO 由读变成缓存命中
  • 优化查询

5.1.6 验证

bash
vmstat 1 5

预期:b 列降低、wa 降低。

5.1.7 回滚

如果优化导致问题,恢复原配置:数据库参数、磁盘挂载、业务流量调度。

5.2 现象:CPU 单核跑满,其他核闲着

5.2.1 初步判断

bash
tophtop

判断:单核 100%,其他核 0%,大概率是单线程应用。

5.2.2 命令检查

bash
mpstat -P ALL 1 5

预期输出:

16:00:00     CPU    %usr   %nice  %sys  %iowait  %irq   %soft  %steal  %guest  %gnice   %idle16:00:01     all    6.25   0.00   3.12    0.00    0.00   0.00    0.00    0.00    0.00   90.6216:00:01       0   100.00  0.00   0.00    0.00    0.00   0.00    0.00    0.00    0.00    0.0016:00:01       1   0.00    0.00   0.00    0.00    0.00   0.00    0.00    0.00    0.00  100.00

判断:CPU 0 跑满,其他空闲。

5.2.3 进程定位

bash
pidstat -u -p <pid> 1 5

预期输出:

16:00:00     UID    PID   %usr %system  %guest   %wait  %CPU  CPU  Command16:00:01    1001   1234   99.00   1.00    0.00    0.00  100.00    0  myapp

5.2.4 根因

单线程应用(典型的 Python、PHP、老 JVM)。

5.2.5 修复

  • 升级到多线程
  • 起多个进程配合负载均衡
  • 改 CPU 亲和性,把进程绑到不同核

5.2.6 验证

bash
mpstat -P ALL 1 5

判断:多核负载均衡。

5.3 现象:内存使用率高,但应用不大

5.3.1 初步判断

bash
free -h

预期:

              total        used        free      shared  buff/cache   availableMem:           16Gi        15Gi       500Mi       100Mi       500Mi       800MiSwap:          8.0Gi       200Mi       7.8Gi

判断:used 看起来 15Gi,但 available 只有 800Mi。说明 buff/cache 没贡献。

5.3.2 进程占用

bash
pidstat -r -p <pid> 1 5

预期:

16:00:00     UID    PID  minflt/s  majflt/s   VSZ    RSS    %MEM  Command16:00:01    1001   1234     0.00     0.00  4.0G  2.0G   12.50  myapp

5.3.3 真实占用

bash
ps -o pid,user,rss,vsz,comm -p <pid>smem -p -P myapp

判断:smem 能给出 USS(独占)/PSS(按比例)/RSS。

5.3.4 根因

  • 应用有泄漏:RSS 持续增长
  • 内核缓存太多:buff/cache 占大头
  • 共享内存被多进程占用:PSS 看起来大

5.3.5 修复

  • 泄漏:heap dump、jmap、pympler
  • 内核缓存:drop_caches 或加内存
  • 共享内存:减少进程数或用 mmap 替代

5.3.6 验证

bash
free -hsmem -t

5.4 现象:磁盘 IO 抖动,await 波动

5.4.1 命令检查

bash
iostat -xz 1 10

判断:

  • await > 10ms:可能有问题
  • await > 50ms:明显异常
  • %util > 80%:磁盘接近满

5.4.2 进程级

bash
pidstat -d 1 5

预期:

16:00:00     UID    PID   kB_rd/s   kB_wr/s kB_ccwr/s  iodelay  Command16:00:01    1001   1234      0.00    1024.00      0.00       5  myapp

5.4.3 实时

bash
iotop -ao

判断:能实时看到哪个进程在写盘。

5.4.4 根因

  • 日志写太多
  • 数据库 binlog 风暴
  • 备份脚本并发跑

5.4.5 修复

  • 调整日志策略
  • 数据库 binlog 切盘或压缩
  • 备份错峰

5.4.6 验证

bash
iostat -xz 1 5

5.5 现象:网络延迟高,带宽没满

5.5.1 流量

bash
sar -n DEV 1 5

预期:

16:00:00     IFACE   rxpck/s  txpck/s  rxkB/s  txkB/s  %ifutil16:00:01       eth0    500.00   400.00    50.00    30.00     5.00

判断:流量不大,但延迟高。

5.5.2 包量与丢包

bash
sar -n EDEV 1 5

预期:

16:00:00     IFACE   rxerr/s  txerr/s  rxdrop/s  txdrop/s16:00:01       eth0       0.00       0.00     50.00      0.00

判断:rxdrop=50,网卡在丢包,可能是 ring buffer 不够。

5.5.3 查看连接

bash
ss -sss -tan | awk '{print $1}' | sort | uniq -c

5.5.4 根因

  • 网卡 ring buffer 满
  • 中断绑核不均衡
  • conntrack 表满
  • tcp backlog 满

5.5.5 修复

  • 加大 ring buffer:ethtool -G
  • 多队列绑核
  • 调大 net.core.somaxconn
  • 减少短连接

5.5.6 验证

bash
sar -n EDEV 1 5

5.6 现象:sar 看历史性能,回溯事故

5.6.1 看 CPU 历史

bash
sar -u -f /var/log/sa/sa25

5.6.2 看内存历史

bash
sar -r -f /var/log/sa/sa25

5.6.3 看 IO 历史

bash
sar -b -f /var/log/sa/sa25sar -d -f /var/log/sa/sa25

5.6.4 看网络历史

bash
sar -n DEV -f /var/log/sa/sa25

5.6.5 看负载历史

bash
sar -q -f /var/log/sa/sa25

5.6.6 看 swap 历史

bash
sar -S -f /var/log/sa/sa25

5.6.7 看 runq 历史

bash
sar -W -f /var/log/sa/sa25

判断:sar 的 -f 选项能加载历史数据,是事后复盘的利器。

5.7 现象:上下文切换高

5.7.1 命令检查

bash
vmstat 1 5

判断:cs 列 > 100k/s 偏高。

5.7.2 进程级

bash
pidstat -w 1 5

预期:

16:00:00     UID    PID   cswch/s nvcswch/s  Command16:00:01    1001   1234    5000.00     100.00  myapp

判断:cswch 高说明进程在主动让出 CPU(等锁、等 IO)。

5.7.3 根因

  • 锁竞争
  • 进程数过多
  • 短连接太多

5.7.4 修复

  • 优化锁
  • 控制进程数
  • 连接复用

5.8 现象:软中断高

5.8.1 命令检查

bash
mpstat 1 5

判断:%soft 列高。

5.8.2 看哪个 CPU

bash
mpstat -P ALL 1 5

判断:某几个核 %soft 高,多队列网卡绑核不均。

5.8.3 修复

  • 多队列绑核:IRQBALANCE_BANNED_CPUS
  • 关 RPS/RFS:ethtool -K
  • 升级网卡驱动

5.9 现象:perf 看热点

5.9.1 实时采样

bash
perf top

5.9.2 记录

bash
perf record -F 99 -a -g -- sleep 30perf report --stdio

5.9.3 看调用栈

bash
perf script

判断:能看到哪个内核函数被调用最多。

5.10 现象:bpftrace 看内核 trace

5.10.1 安装

bash
yum install bpftrace

5.10.2 抓 IO 延迟

bash
bpftrace -e 'kprobe:blk_mq_start_request { @start[arg0] = nsecs; } kprobe:blk_mq_end_request /@start[arg0]/ { @usecs = hist((nsecs - @start[arg0]) / 1000); delete(@start[arg0]); }'

判断:直方图看 IO 延迟分布。

5.10.3 抓 TCP 重传

bash
bpftrace -e 'kprobe:tcp_retransmit_skb { @retrans++; }'

六、常用命令

6.1 vmstat

bash
vmstat 1                # 每秒输出一次vmstat 1 10             # 输出 10 次vmstat -s               # 一次性输出所有累计指标vmstat -d               # 磁盘统计vmstat -p /dev/sda1     # 指定分区

判断:第一行通常被忽略(自启动以来的平均值),从第二行开始看。

6.2 mpstat

bash
mpstat 1                # 全部 CPU 平均mpstat -P ALL 1         # 每核mpstat -P 0 1           # CPU 0mpstat -u 1             # CPU 利用率

判断:%iowait > 30% 通常有 IO 瓶颈;%soft 高说明网络或块设备软中断多。

6.3 pidstat

bash
pidstat 1               # 全部进程pidstat -p 1234 1       # 指定进程pidstat -u 1            # CPUpidstat -r 1            # 内存pidstat -d 1            # IOpidstat -w 1            # 上下文切换pidstat -t 1            # 线程

判断:pidstat 比 top 多两个能力:能看到进程在哪个 CPU、能看到 kB_rd/s 和 kB_wr/s。

6.4 iostat

bash
iostat -xz 1            # 扩展统计,每秒iostat -d 1             # 磁盘统计iostat -p sda 1         # 指定磁盘iostat -m 1             # MB/siostat -N 1             # LVM 设备

判断:%util > 80% 持续 5 分钟通常有 IO 瓶颈。

6.5 sar

bash
sar 1 5                 # 全部基础指标sar -u 1 5              # CPUsar -r 1 5              # 内存sar -b 1 5              # IOsar -d 1 5              # 每块设备sar -n DEV 1 5          # 网络流量sar -n EDEV 1 5         # 网络错误sar -n TCP 1 5          # TCPsar -q 1 5              # 负载sar -S 1 5              # swapsar -W 1 5              # swap 换入sar -A                  # 全部sar -f /var/log/sa/sa25 # 历史数据

判断:sar 数据采集器是 sadc,需要 sysstat 包,默认每 10 分钟采一次,保留 7 天。

6.6 top

bash
top -bn1                # 静态输出top -p 1234             # 指定进程top -H                  # 线程top -c                  # 显示命令行top -o %CPU             # 按 CPU 排序top -o %MEM             # 按内存排序top -u myapp            # 指定用户

判断:top 适合快速浏览,不适合写监控。

6.7 其他常用工具

  • htop
    :top 的增强版
  • iotop
    :磁盘 IO 实时
  • iftop
    :网络流量实时
  • nethogs
    :按进程看网络
  • ss
    :socket 统计
  • lsof
    :打开的文件
  • pstree
    :进程树
  • perf
    :内核热点
  • bpftrace
    :eBPF trace
  • smem
    :真实内存占用
  • numastat
    :NUMA 内存

6.8 sysstat 安装与配置

bash
yum install sysstatsystemctl enable sysstatsystemctl start sysstat
bash
# /etc/sysconfig/sysstatHISTORY=28COMPRESSAFTER=14SADC_OPTIONS="-S DISK"

6.9 cron 自动采集

bash
# /etc/cron.d/sysstat*/10 * * * * root /usr/lib64/sa/sa1 1 153 23 * * * root /usr/lib64/sa/sa2 -A

判断:sa1 是采样、sa2 是日终汇总。

七、配置示例

7.1 /etc/sysconfig/sysstat

bash
HISTORY=28COMPRESSAFTER=14SADC_OPTIONS="-S DISK"

判断:保留 28 天,14 天后压缩。

7.2 /etc/cron.d/sysstat

bash
*/10 * * * * root /usr/lib64/sa/sa1 1 153 23 * * * root /usr/lib64/sa/sa2 -A

判断:每 10 分钟采样,每晚 23:53 汇总。

7.3 prometheus node_exporter 文本采集配置

yaml
scrape_configs:-job_name:'node'static_configs:-targets: ['node_exporter:9100']scrape_interval:15s

判断:node_exporter 默认会暴露 sysstat 数据。

7.4 Grafana 面板变量

text
$instance: 主机名$cpu: cpu 编号$device: 磁盘设备$nic: 网卡名

判断:panel 变量化便于跨主机对比。

7.5 告警规则示例(Prometheus)

yaml
groups:-name:cpurules:-alert:HighCpuLoadexpr:100-(avgby(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m]))*100)>80for:10mannotations:summary:"CPU > 80% on {{ $labels.instance }}"

判断:阈值要结合业务基线,不要硬编码。

7.6 慢查询阈值配置(MySQL)

ini
slow_query_log = 1long_query_time = 1log_slow_extra = ON

判断:long_query_time 单位是秒。

7.7 perf 配置

bash
# /proc/sys/kernel/perf_event_paranoid-1   # 允许所有用户使用 perf0    # 允许普通用户采样 CPU 事件1    # 只允许 root2    # 默认,只允许 CPU events3    # 完全禁用

判断:生产环境建议 2 或 1。

7.8 sysctl 性能参数

bash
# /etc/sysctl.d/99-performance.confnet.core.somaxconn = 65535net.core.netdev_max_backlog = 65535net.ipv4.tcp_max_syn_backlog = 65535net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 15vm.swappiness = 10vm.dirty_ratio = 15vm.dirty_background_ratio = 5fs.file-max = 200000fs.nr_open = 200000

判断:性能调优要结合业务测试。

7.9 iostat 阈值监控脚本

bash
#!/bin/bashwhiletruedo    await=$(iostat -xz 1 2 | tail -1 | awk '{print $11}')    util=$(iostat -xz 1 2 | tail -1 | awk '{print $NF}')if (( $(echo "$await > 50" | bc -l) )) || (( $(echo "$util > 80" | bc -l) )); thenecho"ALERT: await=$await util=$util"fisleep 5done

判断:阈值需要根据基线调整。

7.10 上下文切换阈值监控

bash
#!/bin/bashcs=$(vmstat 1 2 | tail -1 | awk '{print $12}')if [ "$cs" -gt 100000 ]; thenecho"ALERT: context switch=$cs/s"fi

判断:>100k/s 偏高,>500k/s 严重。

八、日志或指标观察方法

8.1 关键性能指标列表

资源
指标
工具
CPU
us/sy/id/wa/st
vmstat、mpstat
内存
used/free/buff/cache/swap
free、vmstat、smem
IO
r/s、w/s、await、%util
iostat、pidstat -d
网络
rxkB/s、txkB/s、errs、drop
sar -n DEV/EDEV
进程
%CPU、%MEM、cswch
pidstat、top
软中断
%soft、%irq
mpstat
上下文切换
cswch/s、nvcswch/s
vmstat、pidstat -w
内存页错误
minflt、majflt
pidstat -r

8.2 阈值经验值(需结合业务基线调整)

指标
警告
严重
CPU us
>70%
>90%
CPU wa
>20%
>40%
load avg
>核数
>2x核数
内存 available
<20%
<10%
swap si/so
>0
>1000/s
iostat await
>10ms
>50ms
iostat %util
>70%
>90%
网卡 rxdrop
>10/s
>100/s
上下文切换
>50k/s
>200k/s
%soft
>10%
>30%

8.3 指标采集间隔

  • 实时排查:1 秒
  • 日常监控:10 秒
  • 历史归档:10 分钟
  • 长期趋势:1 小时

8.4 关联分析

性能问题往往不是单点。分析思路:

  • CPU 高 + wa 高 = IO 瓶颈
  • CPU 高 + sy 高 = 内核瓶颈(锁、syscall)
  • CPU 高 + us 高 = 应用瓶颈
  • 内存 high + swap > 0 = 内存不够
  • await 高 + %util 高 = 磁盘饱和
  • await 高 + %util 低 = 队列问题(NVMe 多队列、SSD 控制器)

8.5 慢 IO 排查流程

bash
iostat -xz 1 5      # 整体 IOiotop -ao            # 实时进程pidstat -d 1         # 进程 IO 速率iotop -P             # 累计 IObpftrace IO trace    # 内核 trace

8.6 网络瓶颈排查流程

bash
sar -n DEV 1 5      # 流量sar -n EDEV 1 5     # 错误nicstat 1 5          # 详细ss -s                # socket 统计ss -tan              # 连接tcpdump -i eth0 -w   # 抓包

8.7 内存瓶颈排查流程

bash
free -h              # 总体vmstat 1 5           # 系统pidstat -r 1         # 进程 RSSsmem -p -P myapp     # 真实占用slabtop              # 内核 slabcat /proc/meminfo    # 详细

8.8 CPU 瓶颈排查流程

bash
top -bn1             # 概览mpstat -P ALL 1      # 每核pidstat -u 1         # 进程 CPUperf top             # 内核热点strace -c -p <pid>   # syscall

8.9 火焰图

bash
yum install perfperf record -F 99 -a -g -- sleep 30perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > flame.svg

判断:火焰图能直观看出热点函数。

8.10 性能数据归档

bash
#!/bin/bashDATE=$(date +%Y%m%d)mkdir -p /var/perf-archive/$DATEsar -A > /var/perf-archive/$DATE/sar.txtvmstat 1 60 > /var/perf-archive/$DATE/vmstat.txtmpstat -P ALL 1 60 > /var/perf-archive/$DATE/mpstat.txtiostat -xz 1 60 > /var/perf-archive/$DATE/iostat.txtpidstat -u -r -d 1 60 > /var/perf-archive/$DATE/pidstat.txt

判断:归档保留 ≥ 90 天,便于长期复盘。

九、排查路径

9.1 “应用慢”

  1. top 看 CPU 占用进程
  2. vmstat 看 wa 列
  3. mpstat 看是否单核满
  4. pidstat 看每个进程资源
  5. iostat 看磁盘
  6. sar -n DEV 看网络
  7. 应用层慢查询日志

9.2 “数据库慢”

  1. 慢查询日志
  2. SHOW PROCESSLIST
  3. SHOW ENGINE INNODB STATUS
  4. pidstat -d 看磁盘 IO
  5. iostat -xz 看 await
  6. EXPLAIN 看执行计划

9.3 “网络慢”

  1. sar -n DEV/EDEV
  2. ping 基础延迟
  3. traceroute 路径
  4. ss -s socket 统计
  5. tcpdump 抓包
  6. ethtool 看网卡统计

9.4 “内存慢”

  1. free -h
  2. vmstat 看 swap
  3. pidstat -r 看进程 RSS
  4. /proc/meminfo 详细
  5. slabtop 内核 slab
  6. drop_caches 释放

9.5 “磁盘慢”

  1. iostat -xz
  2. iotop 实时
  3. pidstat -d 进程 IO
  4. dmesg 看 IO error
  5. smartctl 看磁盘健康
  6. fio 性能测试

十、风险提醒

  • kill -9 <pid>
     杀进程:可能丢数据,先 SIGTERM
  • echo 3 > /proc/sys/vm/drop_caches
    :仅释放 buff/cache,不影响业务,但生产慎用
  • sysctl -p
    :立即生效,改错可能导致网络断开
  • perf record -a -g
    :高开销采样,可能拖慢系统
  • bpftrace
    :需要内核 ≥ 4.9,开销不可忽略
  • dd if=/dev/zero of=/data/test bs=1G count=10
    :直接撑爆磁盘
  • stress --cpu 8
    :压满 CPU 可能触发其他服务熔断
  • kill -STOP <pid>
    :暂停进程,可能被监控误判为 hang
  • tc qdisc add dev eth0 root netem delay 1000ms
    :网络模拟要避免影响业务
  • iperf3 -c server
    :测试带宽会被监控抓包
  • smartctl --smart-test
    :短测试不影响,长测试要时间窗口
  • hdparm -Tt /dev/sda
    :性能测试可能影响业务 IO
  • fio --rw=randwrite
    :高 IO 测试要小心磁盘寿命
  • tcpdump -i any
    :抓包可能抓密码,要合规
  • perf stat -e cache-misses
    :长时间采样性能开销大
  • sysctl vm.swappiness=0
    :可能导致 OOM
  • chmod -R 777 /proc/sys/vm
    :破坏 sysctl
  • echo c > /proc/sysrq-trigger
    :强制 crash,仅调试用

十一、验证方式

  • 关键指标符合预期值
  • 业务延迟恢复正常
  • 没有引入新告警
  • 资源利用率回到基线
  • 错误日志归零
  • 应用层 metrics 正常
  • 历史趋势分析:sar 拉 7 天对比
  • 回归测试:模拟生产流量验证
  • 监控大盘:dashboard 趋势正常
  • 容量规划:是否有性能瓶颈抬头

十二、回滚方案

12.1 sysctl 回滚

bash
# 1. 备份cp /etc/sysctl.d/99-custom.conf /etc/sysctl.d/99-custom.conf.bak# 2. 改回原值vi /etc/sysctl.d/99-custom.conf# 3. 重载sysctl -p /etc/sysctl.d/99-custom.conf

12.2 进程回滚

bash
# 1. 停止当前进程systemctl stop myapp# 2. 切回旧版本ln -sfn /opt/myapp-1.0 /opt/myapp-current# 3. 启动systemctl start myapp

12.3 数据库参数回滚

sql
SETGLOBAL innodb_buffer_pool_size =4*1024*1024*1024;

或重启加载旧 my.cnf。

12.4 内核参数回滚

bash
# 把内核参数恢复原值sysctl net.core.somaxconn=128

12.5 配置文件回滚

bash
cp /etc/my.cnf.bak /etc/my.cnfsystemctl restart mysqld

12.6 磁盘 IO 调优回滚

bash
# 改回默认调度器echo cfq > /sys/block/sda/queue/scheduler

12.7 网络参数回滚

bash
tc qdisc del dev eth0 rootethtool -G eth0 rx 256 tx 256

12.8 服务重启回滚

bash
# 1. 先恢复配置cp /etc/myapp/myapp.conf.bak /etc/myapp/myapp.conf# 2. 重启服务systemctl restart myapp

12.9 内核升级回滚

bash
dnf remove kernel-5.14.0-newgrub2-mkconfig -o /boot/grub2/grub.cfgreboot

12.10 完整回滚检查清单

  • 配置备份
  • 二进制备份
  • 数据库备份
  • 配置变更记录
  • 监控指标趋势
  • 业务影响评估
  • 灰度策略

十三、生产环境注意事项

  • 操作窗口:性能调优尽量在业务低峰
  • 灰度:先 1 台机器验证
  • 备份:所有变更前必须备份
  • 监控:所有变更接入监控
  • 文档:每次变更写变更单
  • 演练:性能调优前演练
  • 数据:性能调优过程中持续采集数据
  • 对比:变更前后必须对比指标
  • 回滚:所有变更必须可回滚
  • 影响:评估变更影响范围
  • 容量:考虑容量规划
  • 业务:变更需业务方确认
  • 团队:变更要知会团队
  • 告警:变更期间告警阈值调整
  • 性能:性能测试要充分

十四、总结

top 是入门,但只靠 top 救不了线上问题。这 5 个命令各司其职:

  1. vmstat:系统级快速看
  2. mpstat:多核均衡问题
  3. pidstat:定位具体进程
  4. iostat:磁盘瓶颈定位
  5. sar:历史回溯

加上 perf 和 bpftrace 等工具,可以应对 90% 的性能问题。

性能排查的思路:先系统后进程,先 CPU 后 IO,先实时后历史。

记住一句话:性能问题不是单点出现的,定位时要把多个指标关联起来看,不要只盯一个数字。

十五、性能排查的 12 条经验

  1. 先看整体后看个体
    :vmstat/mpstat 看系统级
  2. 先看实时后看历史
    :vmstat 1 vs sar -f
  3. 先看 CPU 后看 IO
    :iowait 是关键中间指标
  4. 先看资源后看应用
    :系统资源正常才看应用
  5. 先看进程后看线程
    :pidstat -t 看线程
  6. 先看内核后看用户
    :perf top 看内核
  7. 先看频率后看带宽
    :perf stat 看 cache miss
  8. 先看数量后看延迟
    :sar -q vs sar -n
  9. 先看趋势后看峰值
    :7 天趋势 vs 5 分钟峰值
  10. 先看对比后看绝对
    :不同主机对比 vs 单机指标
  11. 先看基线后看异常
    :先建立基线,异常时知道偏差
  12. 先看慢再查快
    :性能问题优先看慢的指标

十六、性能调优速查表

资源
调优点
命令
CPU 调度
nice、taskset
nice、taskset
CPU 亲和
绑核
numactl、taskset
文件系统
mount 选项
mount -o noatime
IO 调度
选 bfq/none
echo bfq > scheduler
内存回收
swappiness
sysctl vm.swappiness
网络协议
tcp 参数
sysctl net.ipv4.tcp_*
进程数
ulimit
ulimit -n
打开文件
file-max
sysctl fs.file-max

十七、与其他工具的协作

17.1 vmstat + dstat

bash
dstat -tldr

判断:dstat 是 vmstat 的增强版,更直观。

17.2 iostat + iotop

bash
iotop -ao

判断:iotop 实时,iostat 平均。

17.3 mpstat + perf

bash
mpstat -P ALL 1perf top -C 0

判断:mpstat 看 CPU 0 忙,perf 看 CPU 0 上的函数。

17.4 pidstat + pstree

bash
pidstat -u 1pstree -p <pid>

判断:pidstat 看哪个进程,pstree 看进程关系。

17.5 sar + grafana

sar 数据采集,grafana 展示。

17.6 perf + bpftrace

perf 适合采样,bpftrace 适合单点 trace。

十八、性能监控设计建议

18.1 监控分层

  • L1 系统层:CPU、内存、IO、网络
  • L2 进程层:每进程的 CPU、内存、IO
  • L3 应用层:QPS、延迟、错误率
  • L4 业务层:订单量、用户数

18.2 采集频率

  • L1:10s
  • L2:30s
  • L3:60s
  • L4:5min

18.3 存储周期

  • 实时:1 小时
  • 中等:7 天
  • 长期:1 年

18.4 告警分级

  • critical:业务影响
  • warning:资源紧张
  • info:基线偏差

18.5 告警收敛

多个告警关联到一个根因。

18.6 告警疲劳避免

阈值要基于基线,不要硬编码。

18.7 告警演练

每月做一次告警演练。

十九、性能基线示例

19.1 主机基线

  • CPU 平均利用率:< 30%
  • load avg:< 核数
  • 内存可用:> 30%
  • swap 换入:0
  • 磁盘 %util:< 50%
  • 网络带宽:< 30%

19.2 数据库基线

  • QPS:基线 50% 以下
  • 慢查询:< 10/min
  • 复制延迟:< 1s
  • 连接数:< 最大连接 50%

19.3 应用基线

  • 响应时间 P99:基线 50% 以下
  • 错误率:< 0.1%
  • 进程数:稳定

二十、容器场景的性能排查

20.1 容器内的 vmstat

bash
docker exec <container> vmstat 1

20.2 看容器 cgroup

bash
cat /sys/fs/cgroup/cpu/system.slice/docker-<id>.scope/cpuacct.usage

20.3 看容器 IO

bash
cat /sys/fs/cgroup/blkio/system.slice/docker-<id>.scope/blkio.throttle.io_service_bytes

20.4 容器内 perf

容器内 perf 需要 --cap-add=SYS_PTRACE 或特权模式。

20.5 Kubernetes 中的性能排查

bash
kubectl top pod <pod>kubectl top node <node>kubectl describe pod <pod>

判断:kubectl top 依赖 metrics-server。

二十一、压测工具推荐

  • fio
    :磁盘 IO 压测
  • iperf3
    :网络压测
  • sysbench
    :CPU/内存/数据库
  • wrk
    :HTTP 压测
  • ab
    :简单 HTTP 压测
  • stress-ng
    :通用压测
  • netperf
    :网络性能
  • dd
    :简单磁盘读

二十二、案例:一次完整的性能故障复盘

22.1 故障发生

业务反馈:下午 3 点开始,应用 P99 延迟从 50ms 涨到 800ms。

22.2 初步判断

bash
top -bn1

看到 %CPU 不高,但 load average 12(机器 8 核)。

bash
uptime

load average: 12.00, 10.00, 8.00

判断:CPU 负载高,但 CPU% 不高,IO 阻塞嫌疑。

22.3 命令检查

bash
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 1  8      0 1024000 204800 4096000    0    0   10   200  1000  2000  5  3  10 82  0

判断:b=8,wa=82%,确认是 IO 阻塞。

22.4 定位设备

bash
iostat -xz 1 3
Device: rrqm/s wrqm/s  r/s   w/s  rkB/s    wkB/s  avgrq-sz  avgqu-sz  await r_await w_await svctm  %utilsda       0     0    0   50    0      400     16.0     32.0    640.0    0.0    640.0   0.5   100.00sdb       0     0    0   10    0       80     16.0      1.0     12.0    0.0     12.0   0.5    5.00

判断:sda 满载,await 640ms。

22.5 定位进程

bash
pidstat -d 1 3
16:00:00     UID    PID   kB_rd/s   kB_wr/s kB_ccwr/s  iodelay  Command16:00:01    1001   1234      0.00    2048.00      0.00       5  myapp

判断:myapp 进程在大量写盘。

22.6 根因

myapp 在写大量 debug 日志到 sda,sda 是 SSD 但容量已满 80%,IO 抖动。

22.7 修复

  • 关闭 debug 日志
  • 把日志写到 sdb
  • 调整日志策略

22.8 验证

bash
iostat -xz 1 3vmstat 1 5

判断:sda 负载降回基线,wait 归零。

22.9 复盘

  • 性能调优要建立基线
  • 重要日志要单独盘
  • IO 满载要监控告警
  • 应用层 debug 日志要按需开启

二十三、运维手册:性能排查 checklist

每次性能问题按这个走:

  1. 收集:uptime、top、vmstat 1 5、mpstat -P ALL 1 3、iostat -xz 1 3
  2. 分析:定位是 CPU、IO、内存还是网络
  3. 关联:把多个指标关联起来
  4. 定位:找到具体进程和设备
  5. 修复:按优先级处理
  6. 验证:监控确认
  7. 文档:写复盘报告

二十四、写在最后

性能排查是运维的核心技能之一。top 只是起点,vmstat、mpstat、pidstat、iostat、sar 才是真正能救命的工具。把这一篇收藏好,遇到性能问题按章节走,把每个命令都跑熟。

记住:性能问题不是单点的,要看多个指标的关联;性能调优是持续的过程,不是一次性的工作。

把 5 个命令练熟,比看 100 篇科普文有用。

二十五、NUMA 架构下的性能排查

25.1 NUMA 简介

现代多路服务器采用 NUMA(Non-Uniform Memory Access)架构。每个 CPU 有自己的本地内存,访问其他 CPU 的内存要跨 socket。

25.2 看 NUMA 拓扑

bash
numactl --hardwarelscpu | grep NUMA

预期输出:

available: 2 nodes (0-1)node 0 cpus: 0 1 2 3 4 5 6 7node 0 size: 32768 MBnode 0 free: 16384 MBnode 1 cpus: 8 9 10 11 12 13 14 15node 1 size: 32768 MBnode 1 free: 16384 MBnode distances:node   0   1  0:  10  20  1:  20  10

判断:跨 node 访问距离 20,本地访问 10。

25.3 看 NUMA 内存分布

bash
numastat -p <pid>

预期输出:

Per-node process memory usage (in MBs) for PID 1234 (myapp)                 Node 0     Node 1     Total                 ------     ------     -----Heap               512        128       640Stack                8          8        16Private            256        512       768-------           ---        ---      -----Total              776        648      1424

判断:如果分配不均,说明进程被绑在某个 node。

25.4 NUMA 不均的后果

  • 跨 socket 内存访问慢 2-3 倍
  • 性能可能下降 30-50%
  • 严重时单核跑满但内存带宽不够

25.5 修复

  • 进程绑核:numactl --cpunodebind=0 --membind=0
  • 内核自动平衡:sysctl vm.zone_reclaim_mode
  • 大页:numactl --membind
  • 禁用自动平衡:sysctl kernel.numa_balancing=0

25.6 验证

bash
numastat -p <pid>perf stat -e node-loads,node-load-misses -p <pid>

判断:node-load-misses 接近 0 表示 NUMA 友好。

二十六、cgroup 资源隔离性能

26.1 看 cgroup CPU

bash
cat /sys/fs/cgroup/cpu/system.slice/docker-<id>.scope/cpuacct.usage

判断:cgroup CPU 限速会让进程在内核态看到限速。

26.2 cgroup CPU 限制配置

yaml
# docker-compose.ymlservices:myapp:image:myapp:1.0cpus:"2.0"mem_limit:4g

26.3 cgroup v2 性能

cgroup v2 在多核、IO 控制上更精细,建议生产环境使用。

26.4 systemd slice 性能

ini
[Slice]CPUQuota=200%MemoryMax=4GIOWeight=100

二十七、内核调度器性能

27.1 查看当前调度器

bash
cat /sys/block/sda/queue/scheduler

预期:

noop deadline [cfq]

27.2 各调度器适用场景

  • cfq:通用场景
  • deadline:数据库
  • noop:SSD/NVMe
  • bfq:桌面

27.3 切换调度器

bash
echo deadline > /sys/block/sda/queue/scheduler

27.4 验证

bash
iostat -xz 1 5

判断:await 降低为正常。

27.5 多队列 NVMe

NVMe 默认有多个 submission queue,可以看:

bash
cat /sys/block/nvme0n1/queue/nr_requests

二十八、内核参数调优示例

28.1 TCP 性能

bash
net.ipv4.tcp_congestion_control = bbrnet.core.default_qdisc = fqnet.ipv4.tcp_fastopen = 3net.ipv4.tcp_slow_start_after_idle = 0net.ipv4.tcp_mtu_probing = 1

28.2 BBR 验证

bash
sysctl net.ipv4.tcp_congestion_controliperf3 -c <server>

判断:BBR 在长肥管道下能提升 2-10 倍。

28.3 文件描述符

bash
fs.file-max = 2000000fs.nr_open = 2000000

28.4 进程数

bash
kernel.pid_max = 4194304

28.5 内存

bash
vm.swappiness = 10vm.dirty_ratio = 15vm.dirty_background_ratio = 5vm.dirty_expire_centisecs = 1500vm.dirty_writeback_centisecs = 500

28.6 验证

bash
sysctl -p /etc/sysctl.d/99-custom.confsysctl net.ipv4.tcp_congestion_control

二十九、CPU 性能模式

29.1 cpufreq 模式

bash
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

预期:

performance

或:

powersave

29.2 切换性能模式

bash
cpupower frequency-set -g performance

29.3 节能模式

bash
cpupower frequency-set -g powersave

判断:服务器场景一般用 performance,桌面用 ondemand 或 schedutil。

29.4 关闭超线程

bash
echo 0 > /sys/devices/system/cpu/cpu1/online

判断:某些负载下超线程反而拖慢性能。

29.5 turbo boost

bash
cat /sys/devices/system/cpu/intel_pstate/no_turbo

判断:1 表示关闭 turbo,0 表示开启。

三十、内存性能

30.1 大页

bash
sysctl vm.nr_hugepages = 1024cat /proc/meminfo | grep Huge

30.2 透明大页

bash
cat /sys/kernel/mm/transparent_hugepage/enabled

判断:[always] 表示开启,[never] 表示关闭。

30.3 NUMA 平衡

bash
sysctl kernel.numa_balancing = 1

判断:自动 NUMA 平衡有性能开销。

30.4 swap 性能

bash
cat /proc/sys/vm/swappiness

判断:数据库服务器建议 1-10,普通应用 30-60。

30.5 OOM 行为

bash
sysctl vm.panic_on_oom = 0sysctl vm.oom_kill_allocating_task = 0

判断:0 表示由内核选进程 kill,1 表示只 kill 分配内存的进程。

三十一、磁盘 IO 性能

31.1 read_ahead 调整

bash
blockdev --setra 4096 /dev/sda

判断:顺序读多的场景调大,随机读场景调小。

31.2 队列深度

bash
cat /sys/block/sda/queue/nr_requests

判断:NVMe 通常 1024+,SATA SSD 31。

31.3 IO 调度器

bash
echo none > /sys/block/nvme0n1/queue/scheduler

31.4 文件系统

  • XFS:默认高性能
  • ext4:通用稳定
  • btrfs:高级特性
  • zfs:完整特性但有版权

31.5 mount 选项

bash
mount -o noatime,nodiratime,discard /dev/sda1 /data

判断:noatime 减少 atime 更新,nodiratime 减少目录 atime。

三十二、CPU 亲和性

32.1 看 CPU 亲和

bash
taskset -p <pid>

预期:

current affinity mask: ff

判断:ff 表示 8 个核都在允许集。

32.2 绑核

bash
taskset -pc 0,2,4,6 <pid>

32.3 启动时绑核

bash
numactl --physcpubind=0-7 --membind=0 /usr/local/bin/myapp

32.4 systemd 绑核

ini
[Service]CPUAffinity=0123

三十三、压力测试

33.1 CPU 压测

bash
stress-ng --cpu 8 --timeout 60s

判断:用于复现 CPU 满载问题。

33.2 内存压测

bash
stress-ng --vm 1 --vm-bytes 8G --timeout 60s

33.3 IO 压测

bash
fio --name=randwrite --ioengine=libaio --direct=1 --filename=/data/test --bs=4k --size=1G --rw=randwrite --numjobs=4

33.4 网络压测

bash
iperf3 -c <server> -P 4 -t 30

33.5 数据库压测

bash
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=127.0.0.1 --mysql-user=root --mysql-password=xxx --mysql-db=sbtest --tables=10 --table-size=1000000 --threads=16 preparesysbench /usr/share/sysbench/oltp_read_only.lua --threads=16 --time=60 --report-interval=10 run

三十四、生产环境压测注意事项

  • 压测必须在隔离环境
  • 不能在生产环境压测
  • 避免影响线上用户
  • 必须有监控配合
  • 必须有负责人
  • 必须有回滚方案
  • 必须有 SLA 监控

三十五、案例:某电商大促性能优化

35.1 背景

大促前发现应用响应慢,预计大促会有 10 倍流量。

35.2 排查

  • vmstat 看:wa 高
  • mpstat 看:CPU 0 跑满
  • pidstat 看:myapp 进程
  • iostat 看:sda 满
  • perf top 看:内核 mutex_lock

35.3 根因

  • 应用是单线程
  • 数据库随机 IO 多
  • 内核有锁竞争

35.4 优化

  • 改应用为多线程
  • 数据库加索引
  • 关键路径无锁化
  • 加 SSD 缓存盘

35.5 验证

  • 压测达到预期 QPS
  • 业务延迟 P99 < 50ms
  • 资源利用率 < 70%

35.6 复盘

  • 性能优化要从整体考虑
  • 不能只盯一个指标
  • 压测要模拟真实场景
  • 优化要持续迭代

三十六、与监控告警的整合

36.1 关键指标告警

yaml
-alert:HighCpuIowaitexpr:avgby(instance)(rate(node_cpu_seconds_total{mode="iowait"}[5m]))*100>20for:10mannotations:summary:"CPU iowait > 20% on {{ $labels.instance }}"-alert:HighDiskUtilexpr:100-(avgby(instance)(rate(node_filesystem_free_bytes{fstype!~"tmpfs|overlay"}[5m]))*100)>80for:10m

36.2 复合指标

  • CPU 高 + IO 高 = 磁盘瓶颈
  • CPU 高 + 内存高 = 应用瓶颈
  • 网络高 + CPU 高 = 应用瓶颈
  • CPU 低 + 延迟高 = 锁竞争

36.3 性能告警

延迟告警比资源告警更直接:

yaml
-alert:HighResponseTimeexpr:histogram_quantile(0.99,sumby(le)(rate(http_request_duration_seconds_bucket[5m])))>1for:5m

判断:业务指标比资源指标更敏感。

三十七、本文速记口诀

性能问题排查:

  • top 看大面
  • vmstat 看整体
  • mpstat 看每核
  • pidstat 看进程
  • iostat 看磁盘
  • sar 看历史
  • perf 看热点

按顺序跑,先系统后进程,先 CPU 后 IO,先实时后历史。

三十八、推荐阅读

  • Brendan Gregg 《Systems Performance》
  • Brendan Gregg 博客 http://www.brendangregg.com/
  • Linux Performance 文档 http://www.brendangregg.com/linuxperf.html
  • USE 方法(Brendan Gregg)
  • RED 方法(Tom Wilkie)
  • Google SRE Book 第 11 章
  • 《性能之巅》第 2 版

三十九、最后的最后

性能排查没有银弹,只有方法论和工具的结合。把这一篇的 5 个命令练熟,遇到性能问题按章节走,再结合业务场景做判断,比临时百度高效得多。

性能优化是持续的过程,不是一蹴而就。建立基线、持续监控、定期复盘,是把性能做好的三把钥匙。

文末福利

今天给大家分享一份超级牛掰的Linux学习笔记,足足有1456页!是一位Linux运维大佬整理分享的,分享是获得大佬同意的,大家有需要的尽管收藏起来!

笔记介绍

这份笔记非常全面且详细,从Linux基础到shell脚本,再到防火墙、数据库、日志服务管理、Nginx、高可用集群、Redis、虚拟化、Docker等等,与其说Linux学习笔记,不如说是涵盖了运维各个核心知识。

并且图文并茂,代码清晰,每一章下面都有更具体详细的内容,十分适合Linux运维学习参考!

笔记展示

笔记下载

扫描下方二维码,回复暗号1456页Linux笔记“,即可100%免费领取成功

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 00:57:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/501967.html
  2. 运行时间 : 0.234361s [ 吞吐率:4.27req/s ] 内存消耗:4,712.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f36ee92dd7cd67c5f30d2c0a0f3d2298
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000603s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000713s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001640s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000835s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000596s ]
  6. SELECT * FROM `set` [ RunTime:0.001754s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000602s ]
  8. SELECT * FROM `article` WHERE `id` = 501967 LIMIT 1 [ RunTime:0.003773s ]
  9. UPDATE `article` SET `lasttime` = 1783011423 WHERE `id` = 501967 [ RunTime:0.015615s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.004054s ]
  11. SELECT * FROM `article` WHERE `id` < 501967 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.024529s ]
  12. SELECT * FROM `article` WHERE `id` > 501967 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.010661s ]
  13. SELECT * FROM `article` WHERE `id` < 501967 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.024186s ]
  14. SELECT * FROM `article` WHERE `id` < 501967 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.042226s ]
  15. SELECT * FROM `article` WHERE `id` < 501967 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.019856s ]
0.236200s