问题排查思路

症状识别:

uptime   #负载情况
free -h    #内存使用
df -h      #磁盘使用空间
ip addr    #网络接口

 

日志分析:

1 journalctl -xe   #Systemd日志
2 /var/log/syslog   #系统日志(Debian)
3 /var/log/messages    #系统日志(RHEL)
4 dmesg | tail -20    #内核日志

 

 

分层排查法:

 

硬件层:
lscpu   #cpu信息
lsblk    #块设备
smartctl -a /dev/sda  #磁盘健康检测(安装smartmontools)
dmidecode  #硬件信息

网络层

ping -c 4 example.com
traceroute example.com
ss -tulnp  # 比netstat更现代的端口查看
mtr example.com     # 网络路径诊断(需安装)

 

 

应用层

strace -f -o debug.log <command>  # 系统调用跟踪
ltrace <command>    # 库调用跟踪
ldd $(which <app>)  # 检查依赖库

 

 

3. 专项问题工具包

性能瓶颈

top → 按1看CPU核心 → 按M内存排序
htop                # 增强版top
iotop               # IO监控
iftop               # 网络流量
perf top            # 性能分析

 

进程问题

pstree -p           # 进程树
lsof -p <PID>       # 进程打开文件
gdb -p <PID>        # 调试运行中进程

 

包依赖问题

# Debian
apt-get check       # 依赖关系验证
dpkg -l | grep <pkg> # 包安装状态

# RHEL
rpm -Va             # 验证所有包完整性

 


4. 自动化诊断脚本

#!/bin/bash
# 快速系统检查脚本
echo "===== $(date) =====" > system_check.txt
{
  echo "---- Memory ----"; free -h
  echo "---- Disk ----"; df -h
  echo "---- CPU ----"; lscpu
  echo "---- Top Processes ----"; ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
} >> system_check.txt

 



5. 进阶工具

问题类型工具示例命令
内存泄漏 valgrind valgrind --leak-check=yes <app>
网络包分析 tcpdump tcpdump -i eth0 -w dump.pcap
系统调用分析 bpftrace bpftrace -e 'tracepoint:syscalls:sys_enter_* { @[probe] = count(); }'
容器诊断 crictl (K8s) crictl inspect <container-id>

6. 问题记录模板

markdown
 
## 问题现象
- 发生时间:
- 错误消息:
- 复现步骤:

## 已尝试措施
1. 操作A → 结果X
2. 操作B → 结果Y

## 环境信息
- OS版本:`cat /etc/os-release`
- 相关软件版本:`<cmd> --version`
- 硬件配置:`lshw -short`

 


关键原则

  1. 从外到内:先检查网络/权限等外围问题,再深入代码层

  2. 最小化复现:构造最简单的测试用例

  3. 变更控制:记录问题出现前的系统变更

  4. 快照备份:在重大操作前使用LVM/ZFS快照

posted on 2025-05-17 14:16  jun_li123  阅读(13)  评论(0)    收藏  举报

导航