系统性能分析

CPU分析

  • top/htop:实时查看进程CPU占用,按P键按CPU降序排列
  • mpstat -P ALL 1:查看每个CPU核心的使用率
  • pidstat -p PID 1:监控特定进程的CPU使用
  • perf top:查看CPU热点函数,定位性能瓶颈

排查CPU问题的典型流程:先用top找到高CPU进程,再用perf top定位热点函数,最后分析代码优化。

内存分析

  • free -h:查看系统内存使用概况
  • vmstat 1:监控内存、交换分区和IO状态
  • smem:查看进程实际物理内存使用
  • /proc/meminfo:内存详细指标

当发现Swap使用率上升时,说明物理内存可能不足,需要排查内存泄漏或增加内存容量。

磁盘IO分析

  • iostat -x 1:查看磁盘IOPS、吞吐量和等待时间
  • iotop:实时查看进程IO使用
  • df -h:查看磁盘空间使用
  • du -sh *:查看当前目录下各文件/目录大小

日志排查

日志查看

  • journalctl -u nginx --since "1 hour ago":查看特定服务的近期日志
  • tail -f /var/log/syslog | grep ERROR:实时跟踪错误日志
  • less +F /var/log/app.log:类似tail -f但支持查看历史
  • awk '/ERROR/{print}' app.log | sort | uniq -c:统计错误类型

日志分析技巧

使用组合命令快速定位问题:

# 统计最近5分钟的错误数
grep "$(date -d '5 min ago' '+%H:%M')" app.log | grep ERROR | wc -l

# 找出出现最频繁的IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

# 提取两个时间戳之间的日志
sed -n '/2026-05-12 10:00/,/2026-05-12 11:00/p' app.log

网络诊断

连接检查

  • ping:基础连通性测试
  • traceroute:路由路径追踪
  • ss -tuln:查看监听端口
  • netstat -anp:查看所有连接状态

带宽分析

  • nload:实时查看网络带宽
  • iftop:查看进程级别的网络流量
  • nethogs:按进程排序的网络流量监控

DNS排查

  • dig example.com:DNS查询详细信息
  • nslookup example.com:快速DNS查询
  • host example.com:简单的IP查询

常用组合技巧

# 查找大文件
find / -type f -size +100M -exec ls -lh {} \;

# 杀死僵尸进程
ps aux | grep Z | awk '{print $2}' | xargs kill -9

# 实时追踪系统调用
strace -p PID -e trace=network

# 批量替换文本
find . -name "*.conf" -exec sed -i 's/old/new/g' {} \;

掌握这些命令能帮助运维人员在日常工作中快速定位和解决问题,提升系统稳定性。