当前位置:首页>Linux>Linux系统监控指标详解:CPU、内存、IO性能分析实战

Linux系统监控指标详解:CPU、内存、IO性能分析实战

  • 2026-02-06 18:55:37
Linux系统监控指标详解:CPU、内存、IO性能分析实战

Linux系统监控指标详解:CPU、内存、IO性能分析实战

一、概述

1.1 背景介绍

系统监控作为运维工作的核心环节,直接关系到业务稳定性和故障响应效率。Linux系统提供了丰富的性能指标采集机制,通过 /proc 和 /sys 虚拟文件系统暴露内核运行时数据,配合各类监控工具实现对CPU、内存、磁盘IO、网络等关键资源的实时观测。

现代云原生架构下,单机监控已演进为分布式可观测性体系的重要组成部分。掌握底层监控指标的含义和采集方法,是构建有效告警策略、进行性能调优、快速定位故障根因的基础能力。本文从SRE工程实践角度,系统梳理Linux核心监控指标的技术原理与分析方法。

1.2 技术特点

  • 内核级数据源:所有监控指标均来源于Linux内核通过procfs/sysfs暴露的实时数据,具备高精度和低开销特性
  • 多维度覆盖:涵盖CPU调度、内存管理、块设备IO、网络协议栈等核心子系统,支持全栈性能分析
  • 工具链成熟:从基础的vmstat、iostat到高级的perf、eBPF,形成完整的监控工具生态
  • 标准化输出:指标格式遵循POSIX规范,便于与Prometheus、Grafana等现代监控平台集成

1.3 适用场景

  • 容量规划:通过历史监控数据分析资源使用趋势,预测扩容时机,避免资源瓶颈影响业务
  • 性能调优:识别CPU密集型或IO密集型工作负载特征,针对性优化系统参数和应用配置
  • 故障诊断:结合多维指标关联分析,快速定位系统异常根因,缩短MTTR(平均修复时间)
  • SLA保障:建立基于监控指标的告警体系,实现故障预警和自动化响应

1.4 环境要求

组件
版本要求
说明
操作系统
CentOS 8+/Ubuntu 20.04+/Debian 11+
内核版本建议4.15以上,支持完整的cgroup v2和eBPF特性
procps-ng
4.0+
提供ps、top、vmstat、free等基础工具
sysstat
12.7+
提供iostat、mpstat、sar等性能统计工具
htop
3.3+
增强型交互式进程监控工具
iotop
0.6+
磁盘IO实时监控工具
perf
与内核版本匹配
Linux性能分析框架

二、详细步骤

2.1 准备工作

2.1.1 系统环境检查

# 检查内核版本,确认支持所需特性
uname -r
# 预期输出:5.15.0-91-generic 或更高版本

# 检查procfs挂载状态
mount | grep proc
# 预期输出:proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

# 验证sysfs可用性
ls /sys/class/block/
# 预期输出:列出所有块设备

# 检查cgroup版本
cat /sys/fs/cgroup/cgroup.controllers 2>/dev/null && echo"cgroup v2" || echo"cgroup v1"

2.1.2 监控工具安装

RHEL/CentOS/Rocky Linux 系统:

# 安装sysstat工具包
dnf install -y sysstat

# 安装htop增强监控
dnf install -y epel-release
dnf install -y htop iotop

# 安装perf性能分析工具
dnf install -y perf

# 启用sysstat数据采集服务
systemctl enable --now sysstat

Debian/Ubuntu 系统:

# 更新软件源
apt update

# 安装完整监控工具集
apt install -y sysstat htop iotop linux-tools-common linux-tools-$(uname -r)

# 启用sysstat定时采集
sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat
systemctl restart sysstat

2.1.3 数据源目录结构

Linux监控数据主要来源于以下虚拟文件系统:

# CPU相关信息
/proc/stat# CPU时间统计
/proc/loadavg       # 系统负载
/proc/cpuinfo       # CPU硬件信息

# 内存相关信息
/proc/meminfo       # 内存使用详情
/proc/vmstat        # 虚拟内存统计
/proc/buddyinfo     # 内存碎片信息

# 磁盘IO相关信息
/proc/diskstats     # 块设备IO统计
/sys/block/*/stat# 单设备IO统计
/proc/io            # 进程级IO统计(需要root权限)

# 网络相关信息
/proc/net/dev       # 网络接口统计
/proc/net/snmp      # 协议层统计

2.2 CPU监控指标详解

2.2.1 CPU时间片分布

CPU时间按使用类型划分为多个维度,理解各维度含义是性能分析的基础:

# 查看原始CPU统计数据
cat /proc/stat | head -1
# 输出格式:cpu user nice system idle iowait irq softirq steal guest guest_nice

# 使用mpstat查看格式化输出(每秒刷新,共5次)
mpstat -P ALL 1 5

CPU时间维度说明:

指标
含义
正常范围
异常诊断方向
%user
用户态CPU时间(不含nice调整进程)
0-70%
高值表示应用计算密集,检查热点函数
%nice
nice值调整后的用户态时间
0-5%
高值检查是否有大量低优先级任务
%system
内核态CPU时间
0-30%
高值可能存在频繁系统调用或内核bug
%iowait
等待IO完成的CPU时间
0-20%
高值表示IO瓶颈,需分析磁盘性能
%irq
硬中断处理时间
0-5%
高值检查网卡中断、磁盘中断分布
%softirq
软中断处理时间
0-10%
高值常见于高网络流量场景
%steal
虚拟化环境被宿主机占用的时间
0-5%
高值表示虚拟机资源争抢严重
%idle
CPU空闲时间
20-100%
低值需结合其他指标判断瓶颈类型

2.2.2 系统负载(Load Average)

系统负载反映运行队列中等待CPU的任务数量,是评估系统繁忙程度的关键指标:

# 查看系统负载
cat /proc/loadavg
# 输出:0.52 0.48 0.45 2/1089 28754
# 含义:1分钟/5分钟/15分钟负载 运行进程数/总进程数 最近创建的PID

# 使用uptime查看负载
uptime
# 输出:10:23:45 up 45 days, 3:21, 2 users, load average: 0.52, 0.48, 0.45

# 获取CPU核心数用于负载评估
nproc
# 或
grep -c processor /proc/cpuinfo

负载评估原则:

  • 负载值 < CPU核心数:系统资源充足
  • 负载值 = CPU核心数:系统满载运行
  • 负载值 > CPU核心数 × 1.5:存在资源争抢,需要关注
  • 负载值 > CPU核心数 × 2:系统过载,可能影响响应时间
# 负载趋势分析脚本
#!/bin/bash
CORES=$(nproc)
LOAD=$(awk '{print $1}' /proc/loadavg)
RATIO=$(echo"$LOAD$CORES" | awk '{printf "%.2f", $1/$2}')

echo"CPU Cores: $CORES"
echo"Current Load: $LOAD"
echo"Load Ratio: $RATIO"

if (( $(echo"$RATIO > 1.5" | bc -l) )); then
echo"WARNING: System is overloaded!"
fi

2.2.3 CPU使用率实时监控

# 使用top命令监控(按1键展开各CPU核心)
top -bn1 | head -20

# 使用htop获得更友好的交互界面
htop

# 监控特定进程的CPU使用
pidstat -u 1 5

# 按CPU使用率排序进程
ps aux --sort=-%cpu | head -10

top命令关键字段解读:

top - 10:30:45 up 45 days,  3:28,  2 users,  load average: 1.23, 0.98, 0.76
Tasks: 287 total,   2 running, 285 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.2 us,  2.1 sy,  0.0 ni, 91.5 id,  0.8 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :  15896.4 total,   1234.5 free,   8765.4 used,   5896.5 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.   6543.2 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 mysql     20   0 12.5g   8.2g  12345 S  45.2  52.8  12345:67 mysqld
 5678 nginx     20   0  256m   128m   4567 S  12.3   0.8    234:56 nginx

2.3 内存监控指标详解

2.3.1 内存使用全景视图

Linux内存管理涉及物理内存、虚拟内存、缓存等多个层面,/proc/meminfo 提供完整的内存状态信息:

# 查看完整内存信息
cat /proc/meminfo

# 使用free命令查看摘要(-h人性化显示)
free -h
# 输出示例:
#               total        used        free      shared  buff/cache   available
# Mem:           15Gi       8.5Gi       1.2Gi       256Mi       5.8Gi       6.4Gi
# Swap:         4.0Gi          0B       4.0Gi

# 持续监控内存变化(每2秒刷新)
watch -n 2 free -h

关键内存指标解析:

指标
含义
计算方式
监控建议
MemTotal
物理内存总量
硬件配置
基准值,用于计算使用率
MemFree
完全空闲内存
未被任何进程使用
不建议作为告警依据
MemAvailable
可用内存估算
Free + 可回收缓存
推荐作为内存告警指标
Buffers
块设备缓冲区
内核缓冲区
通常较小,几十MB级别
Cached
页面缓存
文件系统缓存
可被回收,不算真正占用
SwapTotal
交换空间总量
配置值
建议为物理内存的0.5-1倍
SwapFree
可用交换空间
未使用的Swap
持续减少需关注

2.3.2 内存使用率计算

# 正确的内存使用率计算方法
#!/bin/bash
# 文件名:mem_usage.sh

# 从/proc/meminfo提取关键值(单位:kB)
MEM_TOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
MEM_AVAILABLE=$(awk '/MemAvailable/ {print $2}' /proc/meminfo)
MEM_BUFFERS=$(awk '/Buffers/ {print $2}' /proc/meminfo)
MEM_CACHED=$(awk '/^Cached/ {print $2}' /proc/meminfo)

# 计算实际使用内存
MEM_USED=$((MEM_TOTAL - MEM_AVAILABLE))

# 计算使用率
USAGE_PERCENT=$(echo"scale=2; $MEM_USED * 100 / $MEM_TOTAL" | bc)

echo"Total Memory: $((MEM_TOTAL / 1024)) MB"
echo"Available Memory: $((MEM_AVAILABLE / 1024)) MB"
echo"Used Memory: $((MEM_USED / 1024)) MB"
echo"Memory Usage: ${USAGE_PERCENT}%"

2.3.3 vmstat内存监控

# vmstat综合监控(每秒采样,共10次)
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  0      0 1234567  89012 5678901    0    0    12    34  567  890  5  2 92  1  0

vmstat内存相关字段:

  • swpd:已使用的交换空间(KB)
  • free:空闲物理内存(KB)
  • buff:用作缓冲区的内存(KB)
  • cache:用作缓存的内存(KB)
  • si:从磁盘换入内存的速率(KB/s)
  • so:从内存换出到磁盘的速率(KB/s)
# 监控Swap活动(si/so非零表示内存压力)
vmstat 1 | awk 'NR>2 {if($7>0 || $8>0) print "SWAP Activity Detected: si="$7" so="$8}'

2.4 磁盘IO监控指标详解

2.4.1 iostat基础监控

# 查看所有磁盘IO统计(扩展模式,每秒刷新)
iostat -xz 1

# 输出示例:
# Device     r/s     w/s   rkB/s   wkB/s  rrqm/s  wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
# sda       12.34   56.78  123.45  567.89    0.12    1.23   0.96   2.12    1.23    2.34   0.12    10.00    10.00   0.56  12.34
# nvme0n1  234.56  123.45 2345.67 1234.56    0.00    0.00   0.00   0.00    0.12    0.23   0.01    10.00    10.00   0.12   5.67

iostat关键指标解析:

指标
含义
正常范围
异常诊断
r/s, w/s
每秒读写请求数
依设备而定
突增需关注业务变化
rkB/s, wkB/s
每秒读写吞吐量
依设备而定
接近设备上限需扩容
r_await, w_await
读写平均响应时间(ms)
HDD<20ms, SSD<5ms
高延迟表示IO瓶颈
aqu-sz
平均请求队列长度
<2
高值表示IO饱和
%util
设备利用率
<70%
持续高值需优化或扩容

2.4.2 块设备原始统计

# 查看块设备原始IO统计
cat /proc/diskstats

# 字段说明(以sda为例):
#  8    0 sda 12345 678 901234 5678 90123 4567 890123 4567 0 8901 23456 0 0 0 0
# 主设备号 次设备号 设备名 读完成数 读合并数 读扇区数 读耗时(ms) 写完成数 写合并数 写扇区数 写耗时(ms) 当前IO数 IO耗时(ms) 加权IO耗时(ms)

# 单设备统计
cat /sys/block/sda/stat

2.4.3 iotop进程级IO监控

# 实时监控进程IO(需要root权限)
iotop -o  # 仅显示有IO活动的进程

# 批处理模式输出
iotop -b -n 5 -d 1

# 按IO排序进程
iotop -o -P -a

三、示例代码和配置

3.1 完整配置示例

3.1.1 Prometheus Node Exporter配置

Node Exporter是采集Linux系统指标的标准组件,以下为生产环境推荐配置:

# 文件路径:/etc/systemd/system/node_exporter.service
[Unit]
Description=PrometheusNodeExporter
Documentation=https://prometheus.io/docs/guides/node-exporter/
After=network-online.target

[Service]
Type=simple
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter\
--web.listen-address=:9100\
--web.telemetry-path=/metrics\
--collector.filesystem.mount-points-exclude="^/(sys|proc|dev|host|etc)($$|/)"\
--collector.netclass.ignored-devices="^(veth|docker|br-).*"\
--collector.diskstats.device-exclude="^(ram|loop|fd|dm-).*"\
--collector.cpu.info\
--collector.meminfo\
--collector.diskstats\
--collector.netdev\
--collector.loadavg\
--collector.vmstat\
--collector.filesystem\
--collector.pressure\
--no-collector.wifi\
--no-collector.nvme\
--no-collector.infiniband

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

配置参数说明:

  • --collector.filesystem.mount-points-exclude:排除虚拟文件系统,减少无效指标
  • --collector.diskstats.device-exclude:排除虚拟磁盘设备
  • --collector.pressure:启用PSI(Pressure Stall Information)采集,内核4.20+支持
  • --no-collector.wifi:禁用不需要的采集器,降低资源消耗

3.1.2 Prometheus告警规则配置

# 文件路径:/etc/prometheus/rules/node_alerts.yml
groups:
-name:node_resource_alerts
interval:30s
rules:
# CPU使用率告警
-alert:HighCpuUsage
expr:|
          100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for:5m
labels:
severity:warning
annotations:
summary:"CPU使用率过高 (实例: {{ $labels.instance }})"
description:"CPU使用率持续5分钟超过85%,当前值: {{ $value | printf \"%.1f\" }}%"

# 内存使用率告警
-alert:HighMemoryUsage
expr:|
          (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 90
for:5m
labels:
severity:warning
annotations:
summary:"内存使用率过高 (实例: {{ $labels.instance }})"
description:"内存使用率持续5分钟超过90%,当前值: {{ $value | printf \"%.1f\" }}%"

# 磁盘空间告警
-alert:DiskSpaceLow
expr:|
          (1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes) * 100 > 85
for:10m
labels:
severity:warning
annotations:
summary:"磁盘空间不足 (实例: {{ $labels.instance }})"
description:"磁盘 {{ $labels.mountpoint }} 使用率超过85%,当前值: {{ $value | printf \"%.1f\" }}%"

# 磁盘IO延迟告警
-alert:HighDiskLatency
expr:|
          rate(node_disk_read_time_seconds_total[5m]) / rate(node_disk_reads_completed_total[5m]) * 1000 > 50
          or
          rate(node_disk_write_time_seconds_total[5m]) / rate(node_disk_writes_completed_total[5m]) * 1000 > 50
for:5m
labels:
severity:warning
annotations:
summary:"磁盘IO延迟过高 (实例: {{ $labels.instance }})"
description:"磁盘 {{ $labels.device }} IO延迟超过50ms"

# 系统负载告警
-alert:HighLoadAverage
expr:|
          node_load15 / count without(cpu, mode) (node_cpu_seconds_total{mode="idle"}) > 1.5
for:15m
labels:
severity:warning
annotations:
summary:"系统负载过高 (实例: {{ $labels.instance }})"
description:"15分钟负载与CPU核心数比值超过1.5,当前值: {{ $value | printf \"%.2f\" }}"

# Swap使用告警
-alert:SwapUsageHigh
expr:|
          (node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes) / node_memory_SwapTotal_bytes * 100 > 50
for:10m
labels:
severity:warning
annotations:
summary:"Swap使用率过高 (实例: {{ $labels.instance }})"
description:"Swap使用率超过50%,可能存在内存压力,当前值: {{ $value | printf \"%.1f\" }}%"

3.2 实际应用案例

案例一:MySQL数据库服务器性能诊断

场景描述:生产环境MySQL服务器响应变慢,需要通过系统监控指标定位瓶颈。

诊断脚本

#!/bin/bash
# 文件名:mysql_server_diagnosis.sh
# 功能:MySQL服务器性能快速诊断

echo"========== MySQL Server Performance Diagnosis =========="
echo"Time: $(date '+%Y-%m-%d %H:%M:%S')"
echo""

# 1. 系统负载检查
echo">>> System Load Average"
uptime
CORES=$(nproc)
LOAD1=$(awk '{print $1}' /proc/loadavg)
echo"CPU Cores: $CORES, Load/Core Ratio: $(echo "scale=2; $LOAD1/$CORES" | bc)"
echo""

# 2. CPU使用分布
echo">>> CPU Usage Distribution (5s sample)"
mpstat 1 5 | tail -1
echo""

# 3. 内存状态
echo">>> Memory Status"
free -h
echo""
echo"MySQL Process Memory:"
ps aux | grep -E "^mysql|^USER" | head -2
echo""

# 4. IO状态检查
echo">>> Disk IO Status"
iostat -xz 1 3 | grep -E "^Device|^sd|^nvme|^vd"
echo""

# 5. MySQL进程IO
echo">>> MySQL Process IO (requires root)"
if [ $(id -u) -eq 0 ]; then
    iotop -b -n 3 -d 1 -P | grep -i mysql
else
echo"Skip: requires root privilege"
fi
echo""

# 6. Swap活动检查
echo">>> Swap Activity Check"
vmstat 1 5 | awk 'NR==1 || NR==2 || NR>2 {print}'
echo""

# 7. 网络连接状态
echo">>> MySQL Network Connections"
ss -tn state established '( dport = :3306 or sport = :3306 )' | wc -l
echo"Active MySQL connections: $(ss -tn state established '( dport = :3306 or sport = :3306 )' | wc -l)"
echo""

echo"========== Diagnosis Complete =========="

运行结果分析

========== MySQL Server Performance Diagnosis ==========
Time: 2026-01-15 14:30:45

>>> System Load Average
 14:30:45 up 120 days,  5:23,  3 users,  load average: 8.52, 7.89, 6.45
CPU Cores: 8, Load/Core Ratio: 1.06

>>> CPU Usage Distribution (5s sample)
Average:     all    2.34    0.00   12.56    0.00   45.67    0.12    1.23    0.00   38.08

>>> Memory Status
              total        used        free      shared  buff/cache   available
Mem:           62Gi        58Gi       512Mi       1.2Gi       3.8Gi       2.1Gi
Swap:         8.0Gi       2.3Gi       5.7Gi

>>> Disk IO Status
Device     r/s     w/s   rkB/s   wkB/s  r_await w_await  %util
sda      456.78  234.56  4567.8  2345.6    12.34   45.67  89.12

诊断结论

  1. **CPU iowait高达45.67%**:表明存在严重IO等待,CPU大量时间消耗在等待磁盘
  2. 内存可用仅2.1GB:62GB总内存几乎耗尽,已开始使用Swap
  3. **磁盘利用率89.12%**:接近饱和,写延迟45.67ms远超正常值
  4. 根因判断:内存不足导致MySQL buffer pool无法完全缓存热数据,频繁磁盘读取造成IO瓶颈

优化建议:扩展内存至128GB,或优化MySQL innodb_buffer_pool_size配置

案例二:Web应用服务器CPU飙升排查

场景描述:Nginx+PHP-FPM架构的Web服务器CPU突然飙升至95%以上,需要快速定位问题进程。

排查步骤

# 步骤1:查看整体CPU状态
top -bn1 | head -15

# 步骤2:按CPU排序查看进程
ps aux --sort=-%cpu | head -20

# 步骤3:查看PHP-FPM进程状态
ps aux | grep php-fpm | grep -v grep | wc -l
echo"PHP-FPM worker count: $(ps aux | grep 'php-fpm: pool' | wc -l)"

# 步骤4:检查是否存在异常进程
ps aux --sort=-%cpu | awk '$3>50 {print $0}'

# 步骤5:使用pidstat定位具体进程
pidstat -u 1 10 | sort -k8 -rn | head -20

实际输出

# ps aux --sort=-%cpu | head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data 23456 98.2  2.1 456789 123456 ?       R    14:25  15:23 php-fpm: pool www
www-data 23457 95.6  2.0 456123 121234 ?       R    14:25  14:56 php-fpm: pool www
www-data 23458 94.8  1.9 455678 119876 ?       R    14:26  14:12 php-fpm: pool www
nginx    12345  5.2  0.3  98765  34567 ?       S    09:00   2:34 nginx: worker

进一步分析

# 使用strace追踪高CPU进程的系统调用
strace -c -p 23456 -f -e trace=all 2>&1 | head -30

# 查看进程打开的文件
ls -la /proc/23456/fd | wc -l

# 检查进程当前执行的PHP脚本
cat /proc/23456/cmdline

根因定位:通过strace发现进程在执行大量正则匹配操作,结合访问日志分析,确认是某个API接口存在正则表达式性能问题(ReDoS漏洞)。


四、最佳实践和注意事项

4.1 最佳实践

4.1.1 监控指标采集优化

合理的采集策略能够平衡监控精度与系统开销:

# 优化sysstat采集频率配置
# 文件:/etc/cron.d/sysstat

# 生产环境推荐:每分钟采集一次
*/1 * * * * root /usr/lib64/sa/sa1 1 1

# 每天23:53生成日报
53 23 * * * root /usr/lib64/sa/sa2 -A

采集频率建议

  • 实时告警指标:10-30秒采集间隔,用于快速故障发现
  • 趋势分析指标:1-5分钟采集间隔,用于容量规划
  • 历史归档指标:按小时/天聚合存储,降低存储成本
# Node Exporter采集性能优化
# 限制采集器数量,减少不必要的指标
node_exporter \
  --collector.disable-defaults \
  --collector.cpu \
  --collector.meminfo \
  --collector.diskstats \
  --collector.filesystem \
  --collector.loadavg \
  --collector.netdev

4.1.2 告警阈值设置原则

避免告警风暴和漏报的关键在于合理的阈值设计:

资源类型
警告阈值
严重阈值
持续时间
说明
CPU使用率
80%
95%
5分钟
排除短暂峰值干扰
内存使用率
85%
95%
5分钟
基于MemAvailable计算
磁盘使用率
80%
90%
10分钟
预留扩容时间窗口
磁盘IO延迟
30ms
100ms
3分钟
SSD标准,HDD适当放宽
系统负载
核心数×1.2
核心数×2
10分钟
考虑业务峰值特征
Swap使用
30%
60%
10分钟
任何Swap使用都需关注

4.1.3 监控数据保留策略

# Prometheus存储配置示例
# 文件:/etc/prometheus/prometheus.yml

global:
scrape_interval:15s
evaluation_interval:15s

storage:
tsdb:
path:/var/lib/prometheus/data
retention.time:30d# 原始数据保留30天
retention.size:100GB# 存储空间上限

# 配合Thanos实现长期存储
# 降采样后的数据可保留1年以上

4.2 注意事项

4.2.1 监控盲区规避

常见的监控盲区及应对策略:

  • 短时峰值遗漏:采集间隔过长可能错过瞬时异常,关键指标建议10秒级采集
  • 聚合数据失真:平均值掩盖极端情况,应同时监控P95/P99分位数
  • 容器环境特殊性:cgroup限制下的资源视图与宿主机不同,需使用容器感知的采集方式
# 容器内正确获取CPU限制
cat /sys/fs/cgroup/cpu.max  # cgroup v2
# 输出:100000 100000 表示可用100%的1个CPU核心

# 容器内正确获取内存限制
cat /sys/fs/cgroup/memory.max  # cgroup v2

4.2.2 常见误区

误区
正确理解
影响
MemFree低就是内存不足
应关注MemAvailable,缓存可回收
误报告警
CPU idle低就是性能问题
需区分user/system/iowait占比
误判瓶颈类型
磁盘util 100%就是瓶颈
NVMe设备可并行处理,util参考价值有限
过度优化
负载高于核心数就异常
IO密集型负载正常偏高
误报告警

4.2.3 虚拟化环境注意事项

虚拟机和容器环境下的监控存在特殊性:

# 检测是否运行在虚拟化环境
systemd-detect-virt
# 输出:kvm/vmware/xen/docker/lxc 等

# 虚拟机环境关注steal时间
mpstat 1 5 | awk '{print $NF}'# 查看%steal列

# 容器环境使用cAdvisor采集
docker run -d \
  --name=cadvisor \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  gcr.io/cadvisor/cadvisor:latest

五、故障排查和监控

5.1 故障排查

5.1.1 日志查看

# 查看系统日志(systemd环境)
journalctl -xe --no-pager | tail -100

# 按时间范围查看日志
journalctl --since "2026-01-15 10:00:00" --until "2026-01-15 12:00:00"

# 查看内核日志(OOM、硬件错误等)
dmesg -T | tail -50

# 查看OOM Killer记录
dmesg -T | grep -i "out of memory"
journalctl -k | grep -i oom

5.1.2 CPU问题排查

问题一:CPU使用率持续100%

# 诊断命令:定位高CPU进程
top -bn1 -o %CPU | head -15

# 查看进程线程级CPU使用
top -H -p $(pgrep -f "进程名")

# 使用perf分析热点函数
perf top -p $(pgrep -f "进程名")

解决方案

  1. 确认是用户态还是内核态消耗
  2. 用户态高:检查应用代码逻辑,使用profiler定位热点
  3. 内核态高:检查系统调用频率,可能存在锁竞争或驱动问题

问题二:iowait异常升高

# 诊断命令:确认IO等待来源
iostat -xz 1 5

# 定位产生IO的进程
iotop -o -b -n 5

# 查看进程IO详情
cat /proc/$(pgrep -f "进程名")/io

解决方案

  1. 检查是否存在大量随机读写
  2. 评估是否需要增加内存以提升缓存命中率
  3. 考虑升级存储设备(HDD升级SSD)

5.1.3 内存问题排查

问题一:OOM Killer触发

# 查看OOM事件详情
dmesg -T | grep -A 20 "Out of memory"

# 分析被杀进程
journalctl -k | grep -E "Killed process|oom-kill"

# 查看当前内存压力
cat /proc/pressure/memory

解决方案

  1. 分析OOM日志确定被杀进程和触发原因
  2. 调整进程oom_score_adj保护关键服务
  3. 增加物理内存或优化应用内存使用

问题二:内存泄漏检测

# 监控进程内存增长趋势
pidstat -r 60 1440 > /tmp/mem_trend.log &

# 查看进程内存映射详情
pmap -x $(pgrep -f "进程名") | tail -1

# 使用smaps分析内存组成
cat /proc/$(pgrep -f "进程名")/smaps_rollup

5.2 性能监控

5.2.1 关键指标监控

# 综合性能监控脚本
#!/bin/bash
# 文件名:system_health_check.sh

echo"===== System Health Check ====="
echo"Time: $(date '+%Y-%m-%d %H:%M:%S')"
echo""

# CPU状态
echo"[CPU]"
mpstat 1 1 | tail -1 | awk '{printf "User: %.1f%% System: %.1f%% IOWait: %.1f%% Idle: %.1f%%\n", $3, $5, $6, $12}'

# 内存状态
echo"[Memory]"
free -h | awk 'NR==2 {printf "Total: %s Used: %s Available: %s\n", $2, $3, $7}'

# 磁盘IO
echo"[Disk IO]"
iostat -xz 1 1 | awk '/^[sv]d|^nvme/ {printf "%s: util=%.1f%% await=%.1fms\n", $1, $NF, $10}'

# 系统负载
echo"[Load]"
cat /proc/loadavg | awk '{printf "1min: %s 5min: %s 15min: %s\n", $1, $2, $3}'

5.2.2 监控指标说明

指标名称
正常范围
告警阈值
说明
CPU使用率
0-70%
>85%持续5分钟
排除idle后的总使用率
内存使用率
0-80%
>90%持续5分钟
基于MemAvailable计算
磁盘IO延迟
SSD<5ms, HDD<20ms
>50ms
读写平均响应时间
磁盘利用率
0-70%
>85%
注意NVMe设备特殊性
系统负载
<核心数
>核心数×1.5
15分钟平均值
网络丢包率
0%
>0.1%
任何丢包都需关注

5.2.3 Grafana仪表盘配置

{
"dashboard": {
"title""Linux System Metrics",
"panels": [
      {
"title""CPU Usage",
"type""timeseries",
"targets": [
          {
"expr""100 - (avg(rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"legendFormat""CPU Usage %"
          }
        ]
      },
      {
"title""Memory Usage",
"type""gauge",
"targets": [
          {
"expr""(1 - node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes) * 100",
"legendFormat""Memory %"
          }
        ]
      }
    ]
  }
}

5.3 备份与恢复

5.3.1 监控数据备份策略

#!/bin/bash
# 文件名:prometheus_backup.sh
# 功能:Prometheus TSDB数据备份

BACKUP_DIR="/backup/prometheus"
DATA_DIR="/var/lib/prometheus/data"
DATE=$(date +%Y%m%d)

# 创建快照
curl -X POST http://localhost:9090/api/v1/admin/tsdb/snapshot

# 获取快照目录
SNAPSHOT=$(ls -t ${DATA_DIR}/snapshots/ | head -1)

# 压缩备份
tar -czf ${BACKUP_DIR}/prometheus_${DATE}.tar.gz \
    -C ${DATA_DIR}/snapshots ${SNAPSHOT}

# 清理7天前的备份
find ${BACKUP_DIR} -name "prometheus_*.tar.gz" -mtime +7 -delete

# 清理快照
rm -rf ${DATA_DIR}/snapshots/${SNAPSHOT}

echo"Backup completed: prometheus_${DATE}.tar.gz"

5.3.2 恢复流程

# 1. 停止Prometheus服务
systemctl stop prometheus

# 2. 解压备份数据
tar -xzf /backup/prometheus/prometheus_20260115.tar.gz \
    -C /var/lib/prometheus/data/

# 3. 验证数据完整性
promtool tsdb analyze /var/lib/prometheus/data/

# 4. 重启服务
systemctl start prometheus

# 5. 验证恢复结果
curl -s http://localhost:9090/api/v1/query?query=up | jq .

六、总结

6.1 技术要点回顾

  • CPU监控核心:区分user/system/iowait/steal等时间维度,结合负载评估系统繁忙程度,iowait高需关注IO子系统
  • 内存监控要点:使用MemAvailable而非MemFree评估可用内存,关注Swap活动作为内存压力信号
  • IO监控关键:await延迟和util利用率是核心指标,NVMe设备需结合IOPS和吞吐量综合判断
  • 工具链选择:基础监控使用vmstat/iostat/free,深度分析使用perf/eBPF,生产环境推荐Prometheus+Grafana体系

6.2 进阶学习方向

  1. eBPF性能分析

    • 学习资源:BPF Performance Tools (Brendan Gregg著)
    • 实践建议:从bcc工具集入手,逐步掌握bpftrace编写自定义追踪脚本
  2. 分布式追踪

    • 学习资源:OpenTelemetry官方文档
    • 实践建议:结合Jaeger/Zipkin实现跨服务调用链追踪
  3. AIOps智能运维

    • 学习资源:时序数据异常检测算法
    • 实践建议:基于历史监控数据训练异常检测模型,实现智能告警

6.3 参考资料

  • Linux Kernel Documentation - procfs - 内核官方procfs文档
  • Brendan Gregg's Linux Performance - Linux性能分析权威资源
  • Prometheus Documentation - Prometheus官方文档
  • Node Exporter GitHub - Node Exporter项目主页
  • sysstat Documentation - sysstat工具集文档

附录

A. 命令速查表

# CPU监控
mpstat -P ALL 1 5          # 查看各CPU核心使用率
pidstat -u 1 10            # 进程级CPU监控
perf top                   # 实时热点函数分析

# 内存监控
free -h                    # 内存使用摘要
vmstat 1 10                # 内存和Swap活动
pmap -x <pid>              # 进程内存映射

# 磁盘IO监控
iostat -xz 1 5             # 磁盘IO统计
iotop -o                   # 进程级IO监控
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT  # 块设备列表

# 系统综合
top -bn1                   # 系统概览快照
htop                       # 交互式进程监控
sar -A                     # 历史性能数据
dmesg -T | tail -50        # 内核日志

B. /proc文件系统关键文件

文件路径
内容说明
常用场景
/proc/stat
CPU时间统计
计算CPU使用率
/proc/loadavg
系统负载
负载监控告警
/proc/meminfo
内存详细信息
内存使用分析
/proc/vmstat
虚拟内存统计
页面换入换出监控
/proc/diskstats
块设备IO统计
磁盘性能分析
/proc/net/dev
网络接口统计
网络流量监控
/proc/[pid]/stat
进程状态
进程级监控
/proc/[pid]/io
进程IO统计
进程IO分析
/proc/pressure/*
PSI压力指标
资源压力评估

C. 术语表

术语
英文
解释
负载
Load Average
运行队列中等待CPU的平均任务数,反映系统繁忙程度
iowait
I/O Wait
CPU等待IO操作完成的时间占比
上下文切换
Context Switch
CPU从一个进程/线程切换到另一个的操作
缺页中断
Page Fault
访问的内存页不在物理内存中,需要从磁盘加载
OOM
Out of Memory
内存耗尽,内核触发OOM Killer终止进程
PSI
Pressure Stall Information
Linux 4.20+引入的资源压力量化指标
IOPS
I/O Operations Per Second
每秒IO操作次数,衡量存储性能
吞吐量
Throughput
单位时间内传输的数据量
延迟
Latency
请求发出到响应返回的时间间隔
利用率
Utilization
资源被使用的时间占比

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 22:00:46 HTTP/2.0 GET : https://f.mffb.com.cn/a/468809.html
  2. 运行时间 : 0.137339s [ 吞吐率:7.28req/s ] 内存消耗:4,602.01kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=43054b1b4e90fe0394fef663ada03eb1
  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.000696s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000833s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001008s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.003104s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000753s ]
  6. SELECT * FROM `set` [ RunTime:0.000233s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000712s ]
  8. SELECT * FROM `article` WHERE `id` = 468809 LIMIT 1 [ RunTime:0.000563s ]
  9. UPDATE `article` SET `lasttime` = 1770472846 WHERE `id` = 468809 [ RunTime:0.004348s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.001357s ]
  11. SELECT * FROM `article` WHERE `id` < 468809 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000546s ]
  12. SELECT * FROM `article` WHERE `id` > 468809 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001290s ]
  13. SELECT * FROM `article` WHERE `id` < 468809 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012298s ]
  14. SELECT * FROM `article` WHERE `id` < 468809 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.016570s ]
  15. SELECT * FROM `article` WHERE `id` < 468809 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.016958s ]
0.140645s