linux监控命令诊断思路
linux监控命令诊断思路详细介绍
在 Linux 系统中,通过监控命令诊断系统性能或故障时,通常遵循 “从整体到细节,从资源到进程,从现象到根源” 的思路。以下是基于常用监控工具的诊断框架和步骤:
一、系统整体状态初步排查
1.
基础系统信息(快速定位异常信号)
- 系统负载:bash
w
- 内核日志(硬件故障、驱动问题):bash
journalctl err
2.
资源监控 “三板斧”
- CPU / 内存 / 进程实时监控:bash
%CPU%MEM
- 内存详细分析:bash
- 磁盘 I/O 状态:bash
iostat
二、分模块深度诊断(CPU / 内存 / 磁盘 / 网络)
1. CPU 瓶颈诊断
- 判断 CPU 瓶颈类型:
top中%us高(用户态进程占用):可能是应用逻辑问题(如死循环)。%sy高(内核态占用):可能是频繁系统调用、驱动或内核参数问题。%wa高(I/O 等待):磁盘或网络 I/O 阻塞,参考iostat中磁盘队列。%id高但系统仍卡:可能是 NUMA 配置问题、CPU 绑定异常。
- 进程级定位:bash
pid,ppid,%cpu,%mem,cmdpstree pid
pid
2. 内存问题诊断
- 内存泄漏或不足:
free -h中available低(实际可用内存),且Swap使用率高,说明内存不足。top/htop中单个进程内存持续增长,可能是应用泄漏(如 Java 进程查看 GC 日志,C 程序用 Valgrind)。
- 内存碎片:bash
/proc/buddyinfo
3. 磁盘 I/O 瓶颈诊断
- 机械盘 vs SSD:
- 机械盘:
%util> 70% 或await> 20ms 可能瓶颈。 - SSD:
await应低于 5ms,关注队列深度(iotop查看进程 I/O)。
- 机械盘:
- 具体文件 / 目录定位:bash
iotoppid
/path
4. 网络问题诊断
- 带宽与连接状态:bash
iftop eth0ss
- 网络延迟与丢包:bash
目标IP目标
nstat
三、长期趋势与日志分析(非实时场景)
1.
历史性能数据
- 系统资源统计:bash
sarsar
sar
- 进程历史记录:bash
pstreelast
2.
应用与系统日志
- 关键日志路径:bash
/var/log/syslog/var/log/secure
/var/log/dmesg
/var/log/httpd/access_log
journalctl 服务名
- 日志分析工具:bash
/var/log/*/var/log/syslog
四、高级诊断工具(特定场景)
1.
性能分析(CPU 热点函数)
bash
perfperf record pid perf report
2.
锁竞争与线程状态
bash
pstack pidpid
3.
内核参数调优参考
bash
/proc/sys/kernel/sched_min_granularity_nsnet.ipv4.tcp_*
五、诊断思路总结
- 明确问题现象:系统卡顿、服务超时、资源使用率异常?
- 定位资源瓶颈:按 CPU → 内存 → 磁盘 → 网络 顺序排查,优先处理最紧迫的瓶颈(如内存耗尽导致 OOM)。
- 关联进程与日志:找到异常进程后,结合其日志和系统调用分析根源(代码逻辑、配置错误、依赖问题)。
- 验证与修复:调整后通过监控工具验证效果(如 kill 异常进程、优化 SQL 查询、增加内存)。
通过 “实时监控工具快速定位 → 日志与历史数据辅助分析 → 特定工具深入追踪” 的流程,可高效诊断 Linux 系统问题。实际操作中需结合具体场景灵活组合工具,避免孤立分析单一指标。