问题排查思路
症状识别:
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. 专项问题工具包
性能瓶颈
进程问题
pstree -p # 进程树 lsof -p <PID> # 进程打开文件 gdb -p <PID> # 调试运行中进程
包依赖问题
# Debian apt-get check # 依赖关系验证 dpkg -l | grep <pkg> # 包安装状态 # RHEL rpm -Va # 验证所有包完整性
4. 自动化诊断脚本
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. 问题记录模板
## 问题现象 - 发生时间: - 错误消息: - 复现步骤: ## 已尝试措施 1. 操作A → 结果X 2. 操作B → 结果Y ## 环境信息 - OS版本:`cat /etc/os-release` - 相关软件版本:`<cmd> --version` - 硬件配置:`lshw -short`
关键原则
-
从外到内:先检查网络/权限等外围问题,再深入代码层
-
最小化复现:构造最简单的测试用例
-
变更控制:记录问题出现前的系统变更
-
快照备份:在重大操作前使用LVM/ZFS快照
浙公网安备 33010602011771号