一、性能监控概述
Linux系统性能监控是运维工作的核心内容,通过监控CPU、内存、磁盘、网络等指标,及时发现和解决性能瓶颈。
1.1 性能监控维度
| 监控维度 | 关键指标 | 常用工具 |
|---|---|---|
| CPU | 使用率、负载、上下文切换 | top, vmstat, mpstat |
| 内存 | 使用率、缓存、交换分区 | free, vmstat, top |
| 磁盘 | IOPS、吞吐量、使用率 | iostat, df, iotop |
| 网络 | 带宽、连接数、丢包率 | iftop, netstat, ss |
二、CPU监控
2.1 top命令
# 启动top
top
# 常用快捷键
P # 按CPU使用率排序
M # 按内存使用率排序
T # 按运行时间排序
1 # 显示所有CPU核心
c # 显示完整命令
k # 终止进程
q # 退出
# 批处理模式
top -b -n 1 > top_output.txt
# 指定用户
top -u nginx
# 指定进程
top -p 12345,12346
# 设置刷新间隔
top -d 5
# 输出示例
top – 10:00:00 up 30 days, 2:15, 3 users, load average: 0.52, 0.58, 0.59
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 92.3 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st
MiB Mem : 7823.5 total, 256.3 free, 4096.2 used, 3471.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3421.2 avail Mem
top – 10:00:00 up 30 days, 2:15, 3 users, load average: 0.52, 0.58, 0.59
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 92.3 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st
MiB Mem : 7823.5 total, 256.3 free, 4096.2 used, 3471.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3421.2 avail Mem
2.2 vmstat命令
# 基本使用
vmstat
# 指定间隔和次数
vmstat 2 5
# 显示活跃/非活跃内存
vmstat -a
# 显示磁盘统计
vmstat -d
# 显示事件计数器
vmstat -s
# 输出说明
# procs: r(运行队列), b(阻塞进程)
# memory: swpd(交换), free(空闲), buff(缓冲), cache(缓存)
# swap: si(从交换读入), so(写入交换)
# io: bi(块读入), bo(块写出)
# system: in(中断), cs(上下文切换)
# cpu: us(用户), sy(系统), id(空闲), wa(等待IO)
2.3 mpstat命令
# 安装
yum install -y sysstat
# 查看所有CPU
mpstat
# 查看指定CPU
mpstat -P 0
# 查看所有CPU核心
mpstat -P ALL
# 指定间隔
mpstat 2 5
# 输出说明
# %usr: 用户态CPU时间
# %nice: nice值调整的用户态时间
# %sys: 内核态CPU时间
# %iowait: IO等待时间
# %irq: 硬中断时间
# %soft: 软中断时间
# %steal: 虚拟化偷取时间
# %guest: 虚拟机时间
# %idle: 空闲时间
三、内存监控
3.1 free命令
# 查看内存
free
# 以MB显示
free -m
# 以GB显示
free -g
# 以人类可读格式
free -h
# 显示总计
free -t
# 定时刷新
free -s 2
# 输出说明
# total: 总内存
# used: 已使用
# free: 空闲
# shared: 共享内存
# buff/cache: 缓冲/缓存
# available: 可用内存(包含可回收缓存)
# 输出示例
total used free shared buff/cache available
Mem: 7.8Gi 4.0Gi 256Mi 128Mi 3.5Gi 3.4Gi
Swap: 2.0Gi 0B 2.0Gi
total used free shared buff/cache available
Mem: 7.8Gi 4.0Gi 256Mi 128Mi 3.5Gi 3.4Gi
Swap: 2.0Gi 0B 2.0Gi
3.2 内存分析
# 查看内存详细信息
cat /proc/meminfo
# 查看进程内存
ps aux --sort=-%mem | head -10
# 查看进程内存映射
pmap -x 12345
# 查看slab内存
slabtop
# 清理缓存
sync && echo 3 > /proc/sys/vm/drop_caches
# 查看大页内存
cat /proc/meminfo | grep Huge
# 查看NUMA信息
numactl --hardware
四、磁盘监控
4.1 iostat命令
# 查看所有设备
iostat
# 查看指定设备
iostat /dev/sda
# 显示扩展统计
iostat -x
# 显示所有设备扩展统计
iostat -x ALL
# 指定间隔
iostat -x 2 5
# 只显示磁盘
iostat -d
# 只显示CPU
iostat -c
# 输出说明
# tps: 每秒传输数
# kB_read/s: 每秒读取KB
# kB_wrtn/s: 每秒写入KB
# %util: 设备利用率
# await: 平均IO等待时间
4.2 磁盘使用监控
# 查看磁盘使用
df -h
# 查看inode使用
df -i
# 查看目录大小
du -sh /var/log
# 查看当前目录下各目录大小
du -h --max-depth=1
# 查看最大的文件
du -ah /var | sort -rh | head -20
# 查看磁盘分区
lsblk
fdisk -l
# 查看磁盘IO
iotop
# 查看进程IO
pidstat -d 2
五、网络监控
5.1 网络连接监控
# 查看所有连接
netstat -an
# 查看TCP连接
netstat -tunlp
# 查看连接状态统计
netstat -nat | awk '{print $6}' | sort | uniq -c
# 使用ss命令
ss -tunlp
ss -s
# 查看特定端口
netstat -tunlp | grep :80
ss -tunlp | grep :80
# 查看连接数
netstat -an | grep ESTABLISHED | wc -l
# 查看TIME_WAIT连接
netstat -an | grep TIME_WAIT | wc -l
5.2 网络流量监控
# 安装iftop
yum install -y iftop
# 监控网卡流量
iftop -i eth0
# 显示端口
iftop -P
# 安装nload
yum install -y nload
# 查看流量
nload eth0
# 使用sar监控网络
sar -n DEV 2 5
# 查看网络错误
sar -n EDEV 2 5
# 查看网络统计
cat /proc/net/dev
六、进程监控
6.1 ps命令
# 查看所有进程
ps aux
# 查看进程树
ps axjf
pstree
# 按CPU排序
ps aux --sort=-%cpu | head -10
# 按内存排序
ps aux --sort=-%mem | head -10
# 查看指定用户进程
ps -u nginx
# 查看指定进程
ps -p 12345 -o pid,ppid,cmd,%cpu,%mem
# 查看线程
ps -eLf
ps -T -p 12345
6.2 进程管理
# 查看进程详情
cat /proc/12345/status
# 查看进程打开的文件
lsof -p 12345
# 查看进程网络连接
lsof -i -a -p 12345
# 查看进程线程
pidstat -t -p 12345
# 终止进程
kill 12345
kill -9 12345
killall nginx
pkill -f "nginx"
# 调整进程优先级
nice -n 10 command
renice -n 5 -p 12345
七、sar系统活动报告
7.1 sar基本使用
# 安装
yum install -y sysstat
# 启用数据收集
systemctl start sysstat
systemctl enable sysstat
# CPU统计
sar -u
# 内存统计
sar -r
# 磁盘统计
sar -d
# 网络统计
sar -n DEV
# 查看历史数据
sar -f /var/log/sa/sa15
# 指定时间范围
sar -s 10:00:00 -e 12:00:00
# 输出到文件
sar -u 2 5 > cpu_stats.txt
八、最佳实践
| 监控项 | 告警阈值 | 处理建议 |
|---|---|---|
| CPU使用率 | >80% | 优化程序或扩容 |
| 内存使用率 | >90% | 增加内存或优化 |
| 磁盘使用率 | >85% | 清理或扩容 |
| 磁盘IO等待 | >30% | 优化IO或升级磁盘 |
注意事项:
- 建立基线数据便于对比
- 设置合理的告警阈值
- 定期检查性能趋势
- 保留历史监控数据
九、总结
性能监控是系统运维的核心技能。通过本培训文档,您应该掌握了:
学习交流加群风哥QQ113257174
- CPU监控工具使用
- 内存监控和分析
- 磁盘IO监控
- 网络监控方法
- 进程监控和管理
- sar系统活动报告
IT运维培训文档系列 | 第69篇 | Linux系统性能监控培训
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
