当前位置:首页>Linux>Linux 磁盘 IO 满载?手把手教你用 iostat 和 blktrace 精准定位

Linux 磁盘 IO 满载?手把手教你用 iostat 和 blktrace 精准定位

  • 2026-07-02 16:38:58
Linux 磁盘 IO 满载?手把手教你用 iostat 和 blktrace 精准定位

背景与现象

运维工程师在日常巡检或接到告警时,经常会遇到这样一类问题:

  • 服务器 CPU 的 %iowait 持续高于 30%,机器负载异常飘高
  • 应用日志里出现大量超时、卡顿,关键接口响应时间从几毫秒跳到几秒甚至几十秒
  • uptime 显示的负载数值(load average)远高于 CPU 核心数,但 vmstat 发现 CPU User% 其实很低
  • 磁盘吞吐(Throughput)并没有打满,但 IO 延迟(Latency)非常高,IO 队列堆积

这类问题的共同特征是:磁盘 IO 成为了系统瓶颈,但瓶颈的具体位置和成因并不一目了然。是哪个进程在大量读写?是哪个文件或块设备?是顺序 IO 还是随机 IO?是读还是写?是应用程序本身的问题还是内核 IO 调度策略的问题?

盲目重启服务、盲目加内存、盲目扩容磁盘,往往解决不了问题,还会引入新的风险。本篇文章的目标是:在不停服的前提下,用 Linux 内置的或常见的工具链,精准定位 IO 性能问题的根因,覆盖从现象观察到根因定位再到调优验证的完整闭环。

工具准备:这些工具通常已内置

以下工具在大多数 Linux 发行版中可直接使用,无需额外安装:

工具
用途
默认包名
iostat
报告 CPU 和块设备 IO 统计
sysstat
iotop
按进程实时显示 IO 使用量
iotop
blktrace
跟踪块设备 IO 请求路径
blktrace
pidstat
按进程报告 IO 统计(sysstat)
sysstat
df
 / du
磁盘空间使用分析
内置
lsof
查看进程打开的文件
lsof
strace
跟踪进程系统调用(含 IO)
strace
perf
性能分析工具
perf-tools

检查工具是否存在:

which iostat iotop blktrace pidstat
iostat -V   # 看 sysstat 版本

第一阶段:先看整体 IO 状况——判断是不是 IO 问题

1.1 用 vmstat 初步判断

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
 4  2      0 2048000 120000 4200000    0    0   128 65536    0    0  5  3 60 32  0
  • bi(blocks received from block device):每秒从磁盘读入的块数
  • bo(blocks sent to block device):每秒写入磁盘的块数
  • wa(I/O wait):CPU 等待 IO 完成的时间百分比
  • b(processes blocked):处于不可中断睡眠状态的进程数

判断标准

  • wa 持续高于 20%~30%,说明系统大量时间花在等待 IO 上,是 IO 瓶颈的强烈信号
  • b 列数值如果大于 CPU 核心数,说明有进程在等待 IO 而被阻塞
  • bi 和 bo 都很低但 wa 很高,常见原因是随机 IO 导致的磁盘寻址开销,而不是吞吐打满

1.2 用 iostat 看块设备全局统计

iostat -xzm 2 5

参数说明:

  • -x:显示扩展统计(%util、avgqu-sz、awits 等关键指标)
  • -z:不显示没有活动的设备
  • -m:以 MB/s 为单位显示吞吐
  • 2 5:每 2 秒采样一次,共采样 5 次

典型输出:

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     2.00    0.50   10.50     0.01     0.52    83.54     0.18   16.42   12.33   16.87   5.22   0.06

核心字段解读

字段
含义
判断阈值
r/s
w/s
每秒读写请求数
结合业务判断,SSD 与 HDD 差异巨大
rMB/s
wMB/s
每秒读写吞吐量
接近磁盘标称上限时要关注
await
平均 IO 等待时间(毫秒),包含排队时间和实际服务时间
HDD > 10ms 需关注,SSD > 1ms 需关注
avgqu-sz
平均 IO 队列长度
HDD > 2 需关注,值越大说明积压越严重
svctm
平均每次 IO 的实际服务时间(毫秒)
与 await 配合看,差距大说明排队时间长
%util
设备利用率(设备忙于处理请求的时间比例)
> 60%~70% 说明设备接近饱和

重点不要只盯着 %util。一块 7200 RPM 的 HDD,即使 %util 只有 40%,如果 avgqu-sz 达到 8,IO 延迟也会非常高,因为队列堆积了太多请求。对于 SSD,%util 更能反映真实饱和程度。

1.3 确认是哪个设备在承受 IO

iostat -d -p ALL 2 1 | grep -E "^sd|^nvme|^dm-"

或者:

cat /proc/diskstats

查看所有块设备的 IO 统计。如果发现 /dev/sda 和 /dev/sda1 都在活跃,要进一步确认是哪个分区在承受负载:

iostat -p sda 2 3

第二阶段:定位到具体进程——谁在读写

2.1 用 iotop 实时看进程级 IO

sudo iotop -o -a -d 2

参数说明:

  • -o:只显示正在做 IO 的进程(减少干扰)
  • -a:显示累计 IO 而非实时速率
  • -d 2:每 2 秒刷新一次

典型输出:

Total DISK READ:        0.00 B/s | Total DISK WRITE:      152.34 MB/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:       8.92 MB/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO COMMAND
12433 be/4 root      152.34 MB/s    0.00 B/s  0.00 % 99.97 % mysqld
 8721 be/3 root        0.00 B/s   120.55 MB/s  0.00 % 78.23 % redis-server
18745 be/4 nginx       8.92 MB/s    0.00 B/s  0.00 % 35.12 % php-fpm

这里可以直接看到:

  • mysqld 正在以 152 MB/s 的速度读取磁盘,这是非常高的读 IO
  • redis-server 以 120 MB/s 写入
  • IO 百分比(%IO 列)显示该进程占用的 IO 带宽比例

注意iotop 需要 root 权限,或者 CAP_NET_ADMIN 等能力。如果在容器内运行,需要 --privileged 或挂载 /proc 和 /sys/kernel/debug

2.2 用 pidstat 按进程 ID 追踪 IO

# 看所有进程的 IO 统计,每 2 秒一次
pidstat -d 2 5

# 看指定进程的 IO 情况(假设 PID 是 12433)
pidstat -d -p 12433 1 10

输出中重点关注 kB_rd/s(每秒读取 KB 数)和 kB_wr/s(每秒写入 KB 数)。

2.3 进一步定位是哪个文件在被读写

拿到进程 PID 后,用 lsof 找出该进程打开了哪些文件:

sudo lsof -p 12433 | grep -E "REG|DIR" | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20

这会列出该进程访问频率最高的文件。如果 MySQL 进程在大量读盘,可能是:

  • innodb_data_file_path:InnoDB 数据文件
  • innodb_log_file_size:Redo log
  • tmpdir 或 sort_buffer_size:临时表和排序溢出

如果发现某个大文件被反复读写,可以进一步确认:

# 看该文件被打开的文件描述符
sudo ls -la /proc/12433/fd | grep -E "$(sudo lsof -p 12433 | grep 'ibdata' | awk '{print $NF}' | head -1)"

第三阶段:分析 IO 模式——是顺序还是随机

3.1 用 iostat 的扩展统计判断 IO 类型

Device:         rrqm/s   wrqm/s     r/s     w/s    rKB/s    wKB/s avgrq-sz avgqu-sz   await
sda               0.00     0.00  3200.00 100.00     0.00  16000.00   5120.00     8.20
  • avgrq-sz(Average Request Size):平均每次 IO 请求的大小,以扇区为单位(512 字节)。这里 avgrq-sz = 5120 即 2.5 MB,明显是大块顺序 IO。
  • 如果 avgrq-sz 在 8~64(4 KB ~ 32 KB)范围,通常是随机小 IO,比如数据库页面读写
  • rrqm/s 和 wrqm/s:合并的读写请求数。如果合并率高(接近 r/s 和 w/s),说明 IO 调度器在合并相邻请求,对顺序 IO 友好

3.2 用 blktrace 跟踪 IO 请求路径

blktrace 是更底层的工具,可以跟踪块设备上每个 IO 请求的生成分发、进入调度、完成的完整路径。对于精确定位问题不可或缺。

安装

# RHEL/CentOS
sudo yum install blktrace -y

# Debian/Ubuntu
sudo apt install blktrace -y

启动跟踪

# 对 sda 设备进行跟踪,输出到当前目录
sudo blktrace -d /dev/sda -o ./blktrace_output

等待一段时间(建议 30 秒到 2 分钟,覆盖一个完整的业务周期),然后按 Ctrl+C 停止。也可以用 -w 参数指定时长:

sudo blktrace -d /dev/sda -w 60 -o ./blktrace_output

这会生成 blktrace_output.blktrace.* 文件。

分析 blktrace 输出

blktrace 本身是二进制格式,需要用 blkparse 转换成可读格式:

sudo blkparse -i ./blktrace_output -d - | head -100

-d 表示直接输出到标准输出。输出格式:

8,0   3        1     0.000000000 12433  Q  WS 33554432 + 8192 [mysqld]
8,0   3        2     0.000001234 12433  G  WS 33554432 + 8192 [mysqld]
8,0   3        3     0.000002456 12433  I  WS 33554432 + 8192 [mysqld]
8,0   3        4     0.000003678 12433  D  WS 33554432 + 8192 [mysqld]
8,0   3        5     0.008765432     0  C  WS 33554432 + 8192 [mysqld]

字段说明

  • 第 1 列 8,0:Major,Minor 设备号
  • 第 2 列 3:CPU ID
  • 第 3 列 1:序列号
  • 第 4 列:时间戳(精确到纳秒)
  • 第 5 列 12433:进程 PID
  • 第 6 列 Q/G/I/D/C:IO 操作阶段
    • Q(Queue):请求进入块层
    • G(Get):IO 调度器获取请求
    • I(Insert):插入调度队列
    • D(Dispatch):从调度器分发到磁盘
    • C(Complete):完成
  • 第 7 列 WSWrite 或 ReadSync 或 Async
  • 第 8 列 33554432:起始扇区号
  • 第 9 列 + 8192:请求扇区数(8192 × 512 字节 = 4 MB)
  • 第 10 列 [mysqld]:进程名

如何通过 blktrace 判断 IO 瓶颈

  1. 看 Q 到 D 的时间差——这是 IO 在调度队列中的等待时间。如果 D 时间戳减去 Q 时间戳数值很大(比如 50ms+),说明 IO 在调度队列里等了太久,内核 IO 调度器是瓶颈。
  2. 看 C 减 D 的时间差——这是磁盘实际处理 IO 的时间。如果这个值很大,说明磁盘自身是瓶颈。
  3. 看读操作的 Q 到 C 延迟——读 IO 的延迟如果远大于写 IO,说明是读请求在排队,这通常与随机读有关。
  4. 结合 avgqu-sz 来看——如果队列中有很多请求在等待,但 D 的频率不高,说明调度器在合并请求,但整体请求量太大。

用 btt 分析 blktrace 结果

blktrace 自带 btt 工具,可以生成更直观的分析报告:

sudo blkparse -i ./blktrace_output -d /tmp/blktrace.bin
python3 /usr/share/doc/blktrace/scripts/btt/btt.py -i /tmp/blktrace.bin -d 2>/tmp/btt_report.txt
cat /tmp/btt_report.txt

btt 会输出每个阶段的平均延迟:

Device: sda
[Q2Q] (ms)      avg:        0.001    min:        0.000    max:       23.421    std:        0.045
[Q2G] (ms)      avg:        0.002    min:        0.000    max:        0.389    std:        0.008
[Q2I] (ms)      avg:        0.001    min:        0.000    max:        0.120    std:        0.004
[I2D] (ms)      avg:        0.087    min:        0.000    max:      152.388    std:        1.234
[D2C] (ms)      avg:       12.456    min:        0.000    max:      456.123    std:       34.567
[Q2C] (ms)      avg:       12.546    min:        0.001    max:      456.234    std:       34.567
  • Q2G:从请求进入到被调度器获取的时间。如果这个值大,说明 CFQ/Deadline 等调度器在排队
  • I2D:从插入调度队列到真正下发到磁盘的时间。这个阶段涉及请求合并和调度决策
  • D2C:从下发到完成的时间,这是磁盘真实处理时间
  • Q2C:端到端延迟

如果 I2D 很大(例如 > 10ms),说明 IO 调度器堆积了大量请求,调度算法本身成为了瓶颈,这时候可以尝试:

  • 换成 noop 调度器(适合 SSD 或高 IOPS 场景)
  • 增大 queue_depth(PCIe SSD)
  • 减少调度器对请求的合并

如果 D2C 很大(例如 HDD 上 > 20ms),说明磁盘自身寻址或传输慢,需要考虑换盘或优化 IO 模式。

3.3 用 seekwatcher 可视化 IO 模式

如果安装了 seekwatcher,可以将 blktrace 数据绘制成图表:

blktrace -d /dev/sda -o raw_data
seekwatcher -t raw_data -o io_visualization.png

生成的 PNG 图片可以直观看到 IO 突发的时间点和 IO 延迟的分布。

第四阶段:常见根因与修复方案

根因一:数据库高并发随机读

典型场景:MySQL InnoDB 在没有足够缓冲池时,大量页面换入换出(Buffer Pool Miss),导致随机 IO。

判断方法

# 看 MySQL InnoDB 缓冲池命中率
mysql -e "SHOW ENGINE INNODB STATUS\G" | grep -E "Buffer pool hit rate|Page reads"

修复方案

  1. 估算 innodb_buffer_pool_size:设置为可用内存的 60%~80%,确保热数据都在内存里
  2. 开启 innodb_buffer_pool_dump_at_shutdown = ON,减少重启后预热时间
  3. 调整 innodb_max_dirty_pages_pct,在脏页积累过多前主动刷新
  4. 检查 innodb_flush_log_at_trx_commit,如果不是严格持久化需求,可以适当放宽到 2
# MySQL my.cnf 示例(innodb_buffer_pool_size 根据实际内存调整)
innodb_buffer_pool_size = 32G   # 建议设置为可用内存的 60-80%
innodb_buffer_pool_instances = 8  # 多实例减少锁竞争
innodb_max_dirty_pages_pct = 75
innodb_flush_log_at_trx_commit = 2
innodb_read_io_threads = 16
innodb_write_io_threads = 16

风险提醒:修改 innodb_flush_log_at_trx_commit 会影响数据持久性。如果设置为 2(每秒刷新一次),极端情况下最多丢失 1 秒的事务数据。只在可接受丢失的业务场景下使用,如数据仓库、统计分析类业务。

根因二:Swap 频繁触发

典型场景:物理内存耗尽,系统开始 Swap,磁盘 IO 暴涨。

判断方法

vmstat 1 5
# 看 si(swap in)和 so(swap out)列是否持续非零

# 看具体哪些进程在用 Swap
for f in /proc/*/status; do awk '/VmSwap/{s+=$2}/Name/{n=$2}END{if(s>0)print n,s}'$f 2>/dev/null; done | sort -k2 -rn | head -10

修复方案

  1. 确认应用内存占用是否合理(是否有内存泄漏)
  2. 调整 vm.swappiness(默认 60,可以降到 10~30,减少主动 Swap)
  3. 增加物理内存
  4. 限制进程内存使用(cgroup 内存限制、MySQL max_connectionsphp-fpmpm.max_children 等)
# 查看当前 swappiness
cat /proc/sys/vm/swappiness

# 临时修改(重启后失效)
sudo sysctl -w vm.swappiness=10

# 永久生效
echo"vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

风险提醒:将 swappiness 降得过低(如 0)可能导致 OOM Killer 在内存真正耗尽前不触发 Swap,反而直接杀进程。要结合业务特点调整。

根因三:IO 调度器不匹配

典型场景:SSD 使用了 cfq(Completely Fair Queuing)调度器,导致 IO 延迟反而变高。HDD 使用了 noop 导致随机读写性能差。

判断方法

# 查看当前调度器
cat /sys/block/sda/queue/scheduler

# 查看块设备类型(SSD 还是 HDD)
cat /sys/block/sda/queue/rotational
# 1 = HDD, 0 = SSD/NVMe

常见调度器

调度器
适用场景
特点
mq-deadline
SSD/NVMe
延迟优先,适合低延迟需求
bfq
多任务桌面/多媒体
公平队列,适合交互式场景
cfq
传统 HDD
公平调度,但延迟不稳定,RHEL 7+ 已废弃
noop
SSD、高并发数据库
无合并,适合低延迟存储

修复方案

# 临时修改(重启后失效)
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler

# 永久生效(RHEL/CentOS)
echo'ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]", ATTR{queue/scheduler]="mq-deadline"' | \
  sudo tee /etc/udev/rules.d/60-ssd-scheduler.rules

# 永久生效(Debian/Ubuntu)
echo'SUBSYSTEM=="block", ATTR{queue/scheduler}="mq-deadline"' | \
  sudo tee /lib/udev/rules.d/60-ssd-scheduler.rules

根因四:文件系统碎片化或挂载选项不当

典型场景:ext4 文件系统在大文件删除后产生碎片,或者 noatime 未挂载导致每次读取都写访问时间,增加 IO。

判断方法

# 查看当前挂载选项
mount | grep sda1

# 检查文件系统碎片(ext4)
sudo fsck -n /dev/sda1  # -n 表示只读检查,不修复

# 对于 xfs
sudo xfs_db -r /dev/sda1
xfs_db> frag

修复方案

  1. 添加 noatime 和 nodiratime 挂载选项,避免访问时间更新带来的写 IO
# 临时生效
sudo mount -o remount,noatime,nodiratime /dev/sda1 /data

# 永久生效(/etc/fstab)
# /dev/sda1 /data ext4 defaults,noatime,nodiratime 0 2
  1. 对 ext4 文件系统,如果碎片严重,可以考虑在线碎片整理(注意:生产环境操作有风险):
# RHEL 7+ 需要安装 e2fsprogs
sudo yum install e2fsprogs -y

# 在线碎片整理(需谨慎,生产环境建议在维护窗口操作)
sudo e4defrag -c /data

根因五:日志写入过于频繁

典型场景:应用程序写大量 DEBUG 级别日志,或者日志轮转(logrotate)配置不当,导致同步写 IO 阻塞。

判断方法

# 看哪些文件被频繁写入
sudo find /var/log -type f -name "*.log" -exec ls -lth {} + | head -20

# 看具体进程的写 IO
pidstat -d 1 5 | grep -v "^Average" | awk '$7 > 0 {print}'

修复方案

  1. 将日志目录迁移到独立磁盘或 SSD
  2. 调整日志级别,关闭不必要的 DEBUG 日志
  3. 使用异步日志写入(大多数 Web 应用支持)
  4. 配置 logrotate 避免单文件过大:
# /etc/logrotate.d/myapp 示例
/var/log/myapp/*.log {
    daily
    rotate 14
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
kill -USR1 $(cat /var/run/myapp.pid 2>/dev/null)  # 通知应用重新打开日志文件
    endscript
}

第五阶段:调优验证与监控

验证 IO 性能基准

调优前后用 fio 做基准测试,记录数据作为对比:

# 安装 fio
sudo yum install fio -y   # or: sudo apt install fio -y

# 随机读测试(模拟数据库场景)
sudo fio --name=randread --filename=/tmp/fio_test --ioengine=libaio \
  --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 \
  --group_reporting -- iodepth=32

# 顺序写测试
sudo fio --name=seqwrite --filename=/tmp/fio_test --ioengine=libaio \
  --rw=write --bs=1M --numjobs=1 --size=2G --runtime=60 \
  --group_reporting -- fsync=1

关注指标

  • IOPS:每秒 IO 操作数,随机读测试中 4K 随机读是核心指标
  • 带宽(BW):顺序读写测试的吞吐量
  • 延迟(lat):平均和 99th percentile 延迟

建立常态化监控

单次排查不足以保证长期健康,需要建立监控:

# crontab 中加入定期 iostat 收集
# 每 5 分钟采集一次 iostat 数据到文件(用于事后分析)
*/5 * * * * /usr/bin/iostat -xzm 2 3 >> /var/log/iostat.log 2>&1

# 告警脚本示例(%util > 80% 时告警)
#!/bin/bash
UTIL=$(iostat -x -c 1 1 | awk '/^%util/{print $NF}')
if (( $(echo"$UTIL > 80" | bc -l) )); then
echo"Disk IO alert: sda util ${UTIL}%" | tee /dev/kmsg
# 这里接你的告警渠道:钉钉/企业微信/PagerDuty
fi

用 Prometheus node_exporter 的磁盘 IO 指标(node_disk_io_time_seconds_totalnode_disk_read_time_seconds_total 等)配合 Grafana 面板展示 IO 趋势,设置合理阈值告警。

故障复盘模板

每次 IO 问题解决后,建议记录以下内容,形成团队知识沉淀:

【故障复盘】磁盘 IO 瓶颈排查

发生时间:
故障持续时长:
影响范围:

现象:
- 系统负载:
- %iowait:
- %util / avgqu-sz:
- 主要 IO 进程:
- IO 类型(读/写/随机/顺序):

排查路径:
1. [命令/工具] 观察到了 [指标],判断为 [初步结论]
2. [命令/工具] 进一步确认了 [指标],排除了 [可能性A]
3. [命令/工具] 定位到根因是 [具体原因]

根因:
修复方案:
验证结果:

预防措施:

总结

磁盘 IO 问题排查的核心路径:

vmstat(初步判断)→ iostat(确认设备级瓶颈)→ iotop(定位进程)
→ pidstat/lsof(定位具体文件和操作)→ blktrace(分析 IO 模式与延迟分布)
→ 根因判断(数据库 Swap 调度器 文件系统)→ 针对性修复 → fio 验证

关键原则:

  • 先看整体再看局部,不要一上来就上 blktrace,先用 vmstat + iostat 过滤掉非 IO 问题
  • 工具组合使用,单一工具往往只能回答部分问题,需要交叉验证
  • 不轻易重启,大多数 IO 问题可以在运行时定位和修复
  • 复盘和监控同样重要,排查一次问题要形成可复用的监控规则和 SOP

大多数 Linux 磁盘 IO 性能问题,根因集中在四个方向:高随机读(数据库 Swap)、同步写 IO(日志/日志轮转)、IO 调度器不匹配、文件系统碎片或挂载选项不当。用好 iostat 和 blktrace 这两把利器,能覆盖 80% 以上的场景。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 15:04:23 HTTP/2.0 GET : https://f.mffb.com.cn/a/495351.html
  2. 运行时间 : 0.371653s [ 吞吐率:2.69req/s ] 内存消耗:4,696.27kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=53bd05ee0e584f70c21bb5448536b681
  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.000401s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000582s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.012562s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000722s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000682s ]
  6. SELECT * FROM `set` [ RunTime:0.000264s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000585s ]
  8. SELECT * FROM `article` WHERE `id` = 495351 LIMIT 1 [ RunTime:0.014954s ]
  9. UPDATE `article` SET `lasttime` = 1783062263 WHERE `id` = 495351 [ RunTime:0.030354s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000395s ]
  11. SELECT * FROM `article` WHERE `id` < 495351 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001509s ]
  12. SELECT * FROM `article` WHERE `id` > 495351 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001557s ]
  13. SELECT * FROM `article` WHERE `id` < 495351 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.032456s ]
  14. SELECT * FROM `article` WHERE `id` < 495351 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.058071s ]
  15. SELECT * FROM `article` WHERE `id` < 495351 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.123690s ]
0.373215s