当前位置: 首页 > news >正文

【Linux日新月异(八)】CentOS 7系统资源监控与排查深度指南:性能调优全景图

🌌提供:
1. Kimi K2 Thinking(网站: 大语言模型(Large Language Model, LLM),是当前人工智能领域的重要技术分支,专注于自然语言处理和生成任务。)【开源】「AL」〖✿✿✿✿✿〗
🔔说明: 本文内容由Kimi K2生成。AI创作虽经校对,仍难免疏漏或偏颇之处。若您发现错漏、或有任何建议,恳请不吝赐教。您的每一次指正,都是我改进与成长的重要指引。
📓摘要:
   略...(有好建议的可以留言哦~~~(✿◕‿◕✿))


📊 CentOS 7系统资源监控与排查深度指南:性能调优全景图

系统监控是运维的"听诊器",CentOS 7提供了从基础到专业的完整监控工具链。掌握这些命令,能在问题爆发前发现征兆,在故障发生后快速定位!


一、🔥 系统整体状态监控

1. uptime- 快速查看系统负载

语法:

uptime [选项]

案例:

uptime
# 输出:
#  15:30:45 up 5 days,  8:20,  3 users,  load average: 2.15, 1.80, 1.45# 更简洁的显示
uptime -p
# 输出:up 5 days, 8 hours, 20 minutes

输出解析:

  • 15:30:45:当前时间
  • up 5 days, 8:20:运行时长
  • 3 users:登录用户数
  • load average核心指标!
    • 2.15:最近1分钟平均负载
    • 1.80:最近5分钟平均负载
    • 1.45:最近15分钟平均负载

负载解读(假设4核CPU)

  • < 4.0 :系统正常运行
  • 4.0 ~ 8.0 :系统繁忙,但可接受
  • > 8.0 :严重过载,需要立即排查!

⚠️ 注意事项:

  • 🔥负载≠CPU使用率:负载包含运行中+等待I/O的进程数
  • 多核考虑:负载应除以CPU核心数。nproclscpu查看核心数
  • 上升趋势:如果1分钟负载远高于15分钟,说明负载正在上升
  • I/O等待:高负载但CPU空闲,说明是磁盘或网络瓶颈

2. dmesg- 内核环缓冲区(硬件/驱动故障)

语法:

dmesg [选项]

核心选项:

  • -H:人类可读,带时间戳
  • -T:显示绝对时间
  • -c:清除缓冲区
  • -l 级别:过滤级别(emerg,alert,crit,err,warn,info)
  • --follow:实时追踪

案例1:查看硬件检测信息

dmesg | grep -i eth
# 查看网卡识别dmesg | grep -i memory
# 查看内存识别dmesg | grep -i usb
# 查看USB设备

案例2:查看错误信息

# 只显示错误和警告
dmesg -l err,warn# 显示时间戳(重要!)
dmesg -T | grep -i error# 输出示例:
[Thu Nov 14 15:30:45 2024] EXT4-fs error (device sda1): ext4_lookup: deleted inode referenced: 12345
# 说明文件系统出现错误!需fsck检查

案例3:实时监控硬件故障

# 监控磁盘I/O错误
dmesg --follow | grep -i "i/o error"
# 出现该错误说明磁盘即将损坏!

⚠️ 注意事项:

  • 🔥时区问题dmesg -T显示的时间可能有时区偏差,需校准
  • 缓冲区大小:dmesg缓冲区有限,重启后清空,重要错误需及时保存
  • 权限:普通用户可查看,但某些敏感信息需root
  • 与journalctl关系:CentOS 7中journalctl -k功能类似,但更全面

3. dmidecode - 硬件信息查询

语法:

dmidecode [选项]

核心选项:

  • -t 类型:指定类型(bios, system, processor, memory)
  • -s 关键字:直接输出关键字值

案例1:查看内存信息

# 查看内存条数量和容量
dmidecode -t memory | grep -i size
# 输出:
# 	Size: 8192 MB
# 	Size: 8192 MB
# 说明有两条8GB内存# 查看内存槽位
dmidecode -t memory | grep -i "locator"
# 输出:
# 	Locator: DIMM_A1
# 	Locator: DIMM_A2

案例2:查看CPU信息

# 查看CPU型号
dmidecode -t processor | grep -i "version"
# 输出:Version: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz# 查看CPU核心数
dmidecode -t processor | grep -i "core"
# 输出:Core Count: 12

案例3:查看服务器序列号

# 查看制造商和序列号(资产管理)
dmidecode -t system | grep -E "Manufacturer|Serial Number"
# 输出:
# 	Manufacturer: Dell Inc.
# 	Serial Number: 8XYZ123

⚠️ 注意事项:

  • 🔥需root权限:普通用户无法读取DMI信息
  • 虚拟机限制:虚拟机信息可能不完整或显示宿主机信息
  • 准确性:信息来自BIOS,如果BIOS有bug可能不准确
  • 与lshw区别lshw信息更详细,但需要安装

二、⚡ CPU资源监控

1. top- 动态CPU监控(前面已讲,补充CPU视角)

案例:CPU视角分析

top - 16:45:30 up 5 days, 9:35,  3 users,  load average: 3.50, 2.80, 2.10
Tasks: 215 total,   3 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s): 25.0 us, 15.0 sy,  0.0 ni, 58.0 id,  2.0 wa,  0.0 hi,  0.0 si,  0.0 st# CPU解读:
# us(25%) + sy(15%) = 应用+内核占用40%(正常)
# id(58%) = 空闲58%
# wa(2%) = I/O等待2%(轻微)

交互命令:

  • 1显示每颗CPU核心(排查单核瓶颈)
  • P:按CPU排序
  • H:显示线程
  • c:显示完整命令路径

⚠️ 高CPU排查流程:

# 1. top找到高CPU进程
# 假设PID 5678占用150% CPU(多核)# 2. 查看进程线程
ps -Lp 5678 -o pid,tid,pcpu,comm
# 找到具体哪个线程(TID)占用高# 3. 查看进程打开的文件和调用
lsof -p 5678
strace -p 5678 -c          # 统计系统调用# 4. 找到代码位置(Java示例)
jstack 5678 | grep <TID的十六进制># 5. 生成火焰图(高级)
perf record -F 99 -p 5678 -g -- sleep 60
perf script | flamegraph.pl > cpu.svg

2. mpstat- 多核CPU统计

安装:

yum install -y sysstat

语法:

mpstat [选项] [间隔] [次数]

案例:

# 查看每颗CPU统计
mpstat -P ALL 1 3
# 每秒刷新,共3次# 输出:
Linux 3.10.0-1160.el7.x86_64 (centos7) 	11/15/2024 	_x86_64_	(4 CPU)04:50:12 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:50:13 PM  all   25.12    0.00   15.06    2.01    0.00    0.00    0.00    0.00    0.00   57.81
04:50:13 PM    0   30.00    0.00   20.00    5.00    0.00    0.00    0.00    0.00    0.00   45.00
04:50:13 PM    1   20.00    0.00   10.00    1.00    0.00    0.00    0.00    0.00    0.00   69.00
04:50:13 PM    2   35.00    0.00   18.00    1.00    0.00    0.00    0.00    0.00    0.00   46.00
04:50:13 PM    3   15.00    0.00   12.00    1.00    0.00    0.00    0.00    0.00    0.00   72.00

⚠️ 单核瓶颈识别:

  • 🔥某CPU idle持续<10%:该核过载,进程绑定不均
  • 软中断不均衡:网卡等多队列未开启,导致单核处理所有中断
  • 解决方案:启用RPS/RFS或绑定进程到特定CPU

3. pidstat - 进程级CPU统计

安装:

yum install -y sysstat

语法:

pidstat [选项] [间隔] [次数]

核心选项:

  • -u:CPU统计
  • -r:内存统计
  • -d:I/O统计
  • -t:线程级统计
  • -p PID:指定进程

案例:

# 监控所有进程CPU(每秒刷新)
pidstat -u 1# 输出:
Linux 3.10.0-1160.el7.x86_64 (centos7) 	11/15/2024 	_x86_64_	(4 CPU)05:00:12 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
05:00:13 PM     0       1234    5.00    2.00    0.00    7.00     2  nginx
05:00:13 PM     0       5678   85.00   15.00    0.00  100.00     1  java# 高亮:java进程占满1核CPU(100%)

⚠️ 注意事项:

  • 🔥线程级分析pidstat -t -p 5678 1可定位具体哪个线程
  • 综合监控pidstat -urd 1同时看CPU、内存、I/O
  • 采样间隔:生产环境建议≥5秒,避免监控本身影响性能

4. perf - 性能分析神器(Linux Profiling)

安装:

yum install -y perf

案例1:CPU周期采样

# 采样10秒
perf record -F 99 -a -g -- sleep 10# 生成报告
perf report

案例2:针对进程分析

# 分析Java进程5678的CPU热点
perf record -F 99 -p 5678 -g -- sleep 30# 查看热点函数
perf report --no-children
# 可看到是哪些函数占用CPU

⚠️ 注意事项:

  • 🔥需要内核调试符号:否则只看到16进制地址
  • 性能开销:采样频率过高会影响生产环境,建议-F 99(99Hz)
  • 生成火焰图:需要安装flamegraph工具
  • 权限:普通用户只能分析自己的进程,root可分析所有

三、💾 内存资源监控

1. free- 内存使用情况

语法:

free [选项]

核心选项:

  • -h:人类可读
  • -m:MB单位
  • -g:GB单位
  • -t:显示总计

案例:

free -h
# 输出:
#               total        used        free      shared  buff/cache   available
# Mem:           7.6G        2.1G        1.2G        136M        4.3G        5.2G
# Swap:          2.0G          0B        2.0G# 重要指标解读:
# - used:已使用(包含缓存,不反映真实占用)
# - free:完全空闲
# - buff/cache:缓存(可回收,不属于真实占用)
# - available:真正可用内存(近似free+buff/cache)
# - Swap used:swap使用量(>0说明内存不足)

⚠️ 内存不足判断标准:

  • 🔥available < 500MB:内存紧张
  • Swap used持续增长:内存泄漏或不足
  • 内存回收慢echo 3 > /proc/sys/vm/drop_caches手动清理缓存(临时)

2. vmstat- 虚拟内存统计(含进程/CPU/IO)

案例(间隔1秒,共5次):

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 st2  0      0 123456  23456 4567890    0    0    10    20   50  100  5  2 90  3  03  1      0 122000  23500 4568000    0    0   500  2000  100  200 10  5 70 15  0

关键字段:

  • si/so:swap换入/换出(⚠️>0说明内存不足)
  • bi/bo:块设备读/写(磁盘I/O)
  • wa:CPU等待I/O时间(>10%说明I/O瓶颈)

⚠️ 内存泄漏排查:

# 持续监控,观察free和cache变化
for i in {1..60}; doecho "=== $(date) ==="vmstat -s | grep -E "used memory|swap"sleep 60
done# 找到占用内存增长的进程
pidstat -r -p 5678 1
# 观察RSS(常驻内存)是否持续增加

3. smem - 内存使用分析(Proportional Set Size)

安装:

yum install -y smem

案例:

# 查看进程真实内存占用(共享内存按比例分配)
smem -s pss
# 输出:PID User     Command                         Swap      USS      PSS      RSS1234 root     nginx: worker process              0    2.1M    2.5M    4.2M5678 root     java -jar app.jar                  0   1.2G    1.3G    1.5G# PSS更准确地反映进程真实占用(考虑共享库)

4. pmap - 进程内存映射

语法:

pmap [选项] PID

案例:

pmap 5678
# 输出:
5678:   java -jar app.jar
0000000000400000    884K r-x-- java
00000000007dc000      8K r---- java
...
00007f8e44000000  65536K rw---   [ anon ]  # 匿名内存(堆栈)
00007f8e48000000  131072K rw---   [ anon ]
...
total              1572864K                # 总映射1.5GB

⚠️ 内存映射分析:

  • [ anon ]:匿名内存,通常是堆和栈,重点关注
  • [ stack ]:线程栈,线程越多越大
  • libc-2.17.so:共享库,不计入进程独占内存

5. sar - 系统活动报告(历史数据)

安装:

yum install -y sysstat
systemctl enable --now sysstat

语法:

sar [选项] [间隔] [次数]

核心选项:

  • -u:CPU
  • -r:内存
  • -b:I/O
  • -n DEV:网络接口
  • -f /var/log/sa/saXX:查看历史数据

案例1:查看历史CPU数据

# 查看今天的CPU数据(每10分钟采样)
sar -u -f /var/log/sa/sa15
# sa15表示15号的数据# 输出:
Linux 3.10.0-1160.el7.x86_64 (centos7) 	11/15/2024 	_x86_64_	(4 CPU)12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM     all      5.00      0.00      2.00      1.00      0.00     92.00
12:20:01 AM     all     80.00      0.00     15.00      5.00      0.00      0.00
# 12:20的idle=0%,说明当时CPU跑满!

案例2:查看历史内存数据

sar -r -f /var/log/sa/sa15
# 关注%memused和%swapused

⚠️ sar配置:

# 修改采集频率(默认10分钟太粗)
nano /etc/cron.d/sysstat
# 改为每1分钟
*/1 * * * * root /usr/lib64/sa/sa1 1 1# 保留90天数据
nano /etc/sysconfig/sysstat
# HISTORY=90

⚠️ 注意事项:

  • 🔥历史回溯:sar是唯一能看到历史性能数据的工具,故障后复盘必备
  • 采样精度:生产环境建议1-5分钟,避免数据太粗漏掉峰值
  • 磁盘空间:高频采集会占用更多磁盘,监控/var/log/sa/大小

四、🌐 网络资源监控

1. ss- 现代网络连接查看(替代netstat)

语法:

ss [选项] [过滤]

核心选项:

  • -t:TCP
  • -u:UDP
  • -n:不解析服务名(显示端口号)
  • -l:监听套接字
  • -p:显示进程信息(需root)
  • -a:所有套接字
  • -m:内存使用
  • -i:内部信息

案例1:查看监听端口

ss -tuln
# 输出:
State    Recv-Q   Send-Q     Local Address:Port      Peer Address:Port   
LISTEN   0        128              0.0.0.0:22             0.0.0.0:*       
LISTEN   0        128                    *:8080                 *:*       
LISTEN   0        128                 [::]:80                [::]:*       # 快速查看端口是否被占用
ss -tuln | grep :8080

案例2:查看ESTABLISHED连接

ss -tn state established
# 或
ss -tn | grep ESTAB# 统计连接数
ss -tn state established | wc -l# 查看每个IP的连接数
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

⚠️ 大量连接排查:

# 1. 查看总连接数
ss -tn | wc -l# 2. 查看TIME_WAIT(过多会占用端口)
ss -tn state time-wait | wc -l# 3. 查看CLOSE_WAIT(程序bug导致连接不释放)
ss -tn state close-wait | wc -l# 4. 查看进程持有的连接
ss -tnp | grep 5678
# -p显示PID和进程名

2. iptraf-ng / iftop - 实时网络流量

安装:

yum install -y iptraf-ng iftop

案例1:iftop查看实时流量

iftop -i eth0
# 界面显示:
# 源IP -> 目的IP   实时速率   峰值   总量
# 192.168.1.100 => 8.8.8.8   1.2Mb  2.3Mb  15.6MB

⚠️ 参数:

  • -n:不解析主机名(更快)
  • -P:显示端口
  • -B:字节为单位

案例2:iptraf-ng交互式监控

iptraf-ng
# 菜单选择:
# 1. IP traffic monitor(按IP统计)
# 2. General interface statistics(接口统计)
# 3. Detailed interface statistics(详细统计)

⚠️ 注意事项:

  • 🔥需要rootiftop/iptraf-ng需root权限抓包
  • 性能影响 :高流量时iftop本身消耗CPU,生产环境慎用
  • 端口镜像:如需抓其他服务器流量,需交换机端口镜像

3. sar -n- 网络历史数据

# 查看今天网络流量历史
sar -n DEV -f /var/log/sa/sa15# 输出:
12:00:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      eth0    100.50     80.30     12.30     15.20      0.00      0.00      0.00# 关键指标:
# rxpck/s: 每秒接收包数
# txpck/s: 每秒发送包数
# rxkB/s: 每秒接收KB数
# txkB/s: 每秒发送KB数

4. netstat - 传统网络统计(已废弃)

# 虽然废弃但仍广泛使用
netstat -tuln
netstat -tn | grep ESTABLISHED

五、🐛 日志分析神器

1. journalctl- systemd日志管理 ⭐⭐

语法:

journalctl [选项] [匹配]

核心选项:

  • -f:实时追踪(tail -f)
  • -u 单元:查看服务日志
  • -p 级别:按优先级过滤(0=emerg, 4=warning, 6=info)
  • --since "时间":从何时开始
  • --until "时间":到何时结束
  • -n 行数:最近N行
  • -o verbose:详细输出(含所有字段)
  • -k:内核日志(代替dmesg)

案例1:查看服务日志

# 查看nginx日志(推荐!)
journalctl -u nginx.service# 查看最近100行
journalctl -u nginx.service -n 100# 实时追踪
journalctl -u nginx.service -f# 查看今天的日志
journalctl -u nginx.service --since today

案例2:按时间过滤

# 查看过去1小时
journalctl --since "1 hour ago"# 查看特定时间段
journalctl --since "2024-11-15 14:00:00" --until "2024-11-15 15:00:00"# 查看系统启动后的日志
journalctl --since "2024-11-15 09:30:00"

案例3:筛选错误日志

# 只显示错误及以上级别
journalctl -p err# 查看内核错误
journalctl -k -p err# 组合:nginx的错误日志
journalctl -u nginx.service -p err --since today

案例4:跟踪进程日志

# 查看PID为5678的进程日志
journalctl _PID=5678# 查看用户操作
journalctl _UID=1000

⚠️ 日志管理配置:

# 配置日志保留(避免占满磁盘)
nano /etc/systemd/journald.conf# 关键参数:
SystemMaxUse=5G           # 日志最大占用5GB
MaxFileSec=30day          # 单个文件最多30天
ForwardToSyslog=no        # 不转发到syslog(避免重复)# 重启服务
systemctl restart systemd-journald# 清理旧日志
journalctl --vacuum-size=2G     # 保留最近2GB
journalctl --vacuum-time=7d     # 保留最近7天

⚠️ 注意事项:

  • 🔥日志持久化:默认日志在内存(/run/log),重启丢失。需配置Storage=persistent/var/log/journal
  • 二进制存储:journalctl日志是二进制,不能直接用cat查看
  • 性能:高频日志写入可能占满磁盘,务必配置上限
  • 与rsyslog关系:CentOS 7中rsyslog和journald并存,可配置互转

2. rsyslog 传统日志(/var/log/

核心日志文件:

文件用途
/var/log/messages系统通用日志
/var/log/secure安全日志(SSH登录等)
/var/log/cron定时任务日志
/var/log/boot.log启动日志
/var/log/dmesg内核日志
/var/log/maillog邮件日志

案例:ssh爆破排查

# 查看失败登录
grep "Failed password" /var/log/secure# 统计IP
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -rn | head -20# 查看成功登录(潜在入侵)
grep "Accepted password" /var/log/secure

3. logrotate - 日志轮转管理

配置:

# 查看配置
nano /etc/logrotate.conf# 示例:自定义nginx日志轮转
nano /etc/logrotate.d/nginx
# /var/log/nginx/*.log {
#     daily
#     missingok
#     rotate 52
#     compress
#     delaycompress
#     notifempty
#     create 640 nginx adm
#     postrotate
#         /bin/kill -USR1 $(cat /run/nginx.pid)
#     endscript
# }

手动触发轮转:

logrotate -f /etc/logrotate.d/nginx
# -f: force

六、🛠️ 综合故障排查案例

案例1:系统响应慢,SSH卡顿

排查步骤:

# 1. 查看负载
uptime
# load average: 15.0, 10.0, 5.0  (4核CPU,严重过载)# 2. top看CPU
top -b -n 1 | head -20
# 发现wa=60% (I/O等待!)# 3. vmstat确认
vmstat 1 5
# wa列持续50-70%,bi/bo很大# 4. iostat找磁盘
iostat -x 1
# sda的%util=99.9%,await=200ms(磁盘瓶颈!)# 5. 找进程
iotop -o
# 发现mysql进程占I/O 80%# 6. 查mysql
journalctl -u mysqld -p err
# 大量 "InnoDB: Deadlock found..." 死锁# 结论:MySQL死锁导致磁盘I/O暴增
# 解决:kill长事务,优化SQL

案例2:内存耗尽,OOM Killer触发

排查步骤:

# 1. dmesg查看OOM日志
dmesg -T | grep -i "out of memory"
# 输出:
[Thu Nov 14 16:00:00 2024] Out of memory: Kill process 5678 (java) score 882 or sacrifice child# 2. 查看OOM前的内存
sar -r -f /var/log/sa/sa14
# %memused 从80%直线上升到99%# 3. 查看进程占用
ps aux --sort=-%mem | head -10
# java进程RSS=6GB,系统内存8GB# 4. 查看内存泄漏
pmap -x 5678 | tail -1
# total kB    6291456(持续增长)# 5. 检查jvm参数
ps -ef | grep java
# -Xmx8g,但系统只有8GB,留不足!# 结论:JVM堆配置过大+内存泄漏
# 解决:调小-Xmx,修复代码泄漏

案例3:网络连接数暴增,服务无法响应

排查步骤:

# 1. 查看连接数
ss -tn | wc -l
# 10000+(正常应<1000)# 2. 查看TIME_WAIT
ss -tn state time-wait | wc -l
# 8000+(连接未快速回收)# 3. 查看端口监听
ss -tuln | grep :8080
# Recv-Q=128(队列满)# 4. 查看进程FD限制
cat /proc/5678/limits | grep "Max open files"
# Max open files            1024                 1024                 files
# 限制太小!# 5. 查看系统级限制
sysctl fs.file-max
# fs.file-max = 100000(够用)# 6. 查看TCP参数
sysctl net.ipv4.tcp_tw_reuse
# net.ipv4.tcp_tw_reuse = 0(未开启复用)# 结论:FD限制+TIME_WAIT未复用
# 解决:
# 1. ulimit -n 65535
# 2. sysctl -w net.ipv4.tcp_tw_reuse=1
# 3. 修改应用连接池配置

七、⚠️ 监控铁律与最佳实践

1. 🔥 监控的"3-3-3"原则

  • 3秒:突发问题3秒内发现(dmesg -w实时)
  • 3分钟:定位到进程和原因(top+ss+journalctl
  • 30分钟:解决问题或止损(kill/systemctl restart

2. 🔥 监控工具选择矩阵

场景推荐工具备选工具避免使用
CPU瞬时高top + pidstathtopps aux(静态)
CPU历史sar -uperfvmstat(粗略)
内存泄漏pmap + pidstat -rsmemfree(整体)
内存历史sar -rvmstattop(不准确)
磁盘I/Oiostat -xiotopdu(无关)
网络连接ss -tnpiftopnetstat(废弃)
网络历史sar -n DEViptablesifconfig(过时)
日志实时journalctl -ftail -fcat(低效)
日志历史journalctl --sincegrepvim(大文件卡死)

3. 🔥 生产环境监控禁忌

  1. 禁止生产环境运行perf record -F 9999:高频采样导致系统卡顿
  2. 禁止tail -f /var/log/xxx | grep xxx监控:占用大量内存(管道缓冲)
  3. 禁止高频lsof:遍历所有进程文件句柄,性能差
  4. 禁止du -h /定时任务:每次扫描全盘,I/O风暴

4. 🔥 监控脚本最佳实践

#!/bin/bash
# 健康检查脚本示例# 1. 设置超时(避免卡死)
timeout 5 ss -tn > /tmp/conn.txt# 2. 使用ss代替netstat
CONN=$(wc -l < /tmp/conn.txt)# 3. 阈值判断
if [ $CONN -gt 5000 ]; then# 4. 记录关键信息echo "$(date): Connection spike: $CONN" >> /var/log/health.logss -tn state time-wait | wc -l >> /var/log/health.log# 5. 触发告警echo "High connections on $(hostname)" | mail -s "Alert" admin@example.com
fi# 6. 清理临时文件
rm -f /tmp/conn.txt

八、📚 终极排查流程图

用户反馈:系统慢/无响应↓uptime (load average)↓top (CPU/内存/进程)↓vmstat (wa/memory/swap)↓iostat (磁盘I/O瓶颈)↓ss/netstat (网络连接)↓journalctl/dmesg (错误日志)↓定位到具体进程 (PID)↓strace/lsof/pmap (进程详情)↓确定根本原因 (代码/配置/资源)↓制定解决方案

🎓 总结:监控排查的"三字经"

  1. 看整体uptime+vmstat判断问题类型(CPU/内存/IO/网络)
  2. 抓进程top+pidstat定位元凶PID
  3. 查细节strace+lsof+pmap分析进程行为
  4. 翻旧账sar+journalctl追溯历史
  5. 定方案:根据证据修复,而非猜测

记住:监控是预防医学,排查是急诊手术。建立完善的监控体系,远胜于救火式的排查!



📖原文: 聚散离合,乃是缘分,苦情巨树续的是缘,而有缘,未必有分。 --《狐妖小狐娘》

⌛怡然: ...


🪁 LuminKu looks forward to seeing you again 🌌

http://www.dtcms.com/a/617611.html

相关文章:

  • word中怎么查看插入的图片占用内存大小来压缩word文件整体大小
  • Flink CDC + MaxCompute用 MaxCompute Connector 打通实时入湖通道
  • 【AI 学习】AI Agent 开发进阶:架构、规划、记忆与工具编排
  • 二十三、Transformer架构详解
  • JAR逆向工程实战对比:传统工具 vs 自动化解决方案
  • 算法学习--离散化
  • 沈阳住房和城乡建设厅网站越南语网站怎么做
  • React + ECharts 实践:构建可交互的数据可视化组件
  • Devconnect 活动报名中!dAI 路线图、跨链 / 预言机创新新动态!Linera 实战+Web3 安全公开课上线!
  • 华为、阿里巴巴、字节跳动 100+ Linux面试问题总结(一)
  • [OpenHarmony6.0][Docker][环境]OHOS6 编译环境构建指南
  • 空包网站建设属于哪类网站排名优化推广厦门
  • async await 的前世今生
  • 外卖项目day02
  • 多电压输出场景下ASP3605负载调整率的一致性验证
  • 使用rust复刻linux经典命令:wc(文本统计工具)
  • 网站设计公司哪里好镇江网站建设找思创网络
  • 45_FastMCP 2.x 中文文档之FastMCP集成:Azure (Entra ID) 指南
  • 【微服务中间件】RabbitMQ 全方位解析:同步异步对比、SpringAMQT基础入门、实战、交换机类型及消息处理详解
  • 单点高ROI场景医疗AI编程分析与实践
  • 使用python进行PostgreSQL 数据库连接
  • 天线类型和指标介绍
  • Netty编写Echo服务器
  • 沙雕图片视频制作软件。制图内都是搞笔图制作模板,表白墙,节日祝福制作
  • 开源项目分享 图像深度学习Demo项目
  • 性能优化方向
  • 2.socket套接字
  • 旧网站如何优化设计制作实践活动有哪些
  • HTML 实例详解
  • 【监控】Spring Boot+Prometheus+Grafana实现可视化监控