CentOS 7 服务器性能监控实战指南

一、引言

在企业级IT架构中,CentOS 7凭借稳定、安全、开源的特性,成为服务器操作系统的主流选择。服务器性能直接决定业务响应速度、系统稳定性和用户体验,一旦出现CPU过载、内存泄漏、磁盘I/O阻塞或网络带宽耗尽等问题,轻则导致服务卡顿,重则引发业务中断。

性能监控是运维工作的核心环节,其价值不仅在于故障发生后快速定位根源 ,更在于建立性能基线、提前识别潜在风险,实现从"被动救火"到"主动防御"的转变。本文面向初级至中级运维工程师、DevOps从业者,聚焦CentOS 7系统内置及易部署的命令行工具,从CPU、内存、磁盘I/O、网络四大核心维度,系统讲解性能监控的方法、工具使用和故障排查思路,帮助读者快速掌握服务器性能评估与问题定位的实战技能。

二、核心监控维度与工具实战

2.1 CPU性能监控

CPU是服务器的"运算大脑",其负载状态直接反映系统处理能力。核心监控指标包括CPU使用率、负载平均值、进程占用率

2.1.1 实时监控工具:top

top是CentOS 7内置的实时系统监控工具,无需额外安装,直接执行即可查看CPU、内存、进程等关键指标,需root或普通用户权限

命令格式

复制代码
top

关键输出解读

  • 第一行(系统概览):Cpu(s): 15.7%us, 0.3%sy, 0.0%ni, 83.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st

    • us:用户空间CPU使用率(如应用程序、脚本),过高说明应用占用过多资源;

    • sy:内核空间CPU使用率,过高可能是系统调用频繁或内核异常;

    • id:空闲CPU百分比,持续低于20%需警惕CPU过载;

    • wa:等待I/O的CPU时间百分比,过高表示磁盘I/O存在瓶颈。

  • 第三行(负载平均值):load average: 1.20, 0.80, 0.50

分别代表系统1分钟、5分钟、15分钟内的平均负载,建议阈值不超过CPU核心数(例如4核CPU负载平均值长期>4则为过载)。

实战技巧

  • top界面按P键,按CPU使用率从高到低排序进程,快速定位"CPU杀手"进程;

  • k键输入进程PID,可结束高占用进程(警告:生产环境需谨慎操作,避免误杀核心业务进程)。

2.1.2 简洁监控工具:vmstat

vmstat(Virtual Memory Statistics)可输出CPU、内存、I/O的综合统计数据,适合快速查看系统整体状态,无特殊权限要求

命令格式(采样间隔2秒,共采样5次):

复制代码
vmstat 2 5

CPU相关输出

复制代码
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2  0      0 123456  10240 567890    0    0     5    10  150  300 15  2 82  1  0
  • r:等待运行的进程数,持续大于CPU核心数表示CPU资源不足;

  • us/sy/id/wa:与top含义一致。

2.2 内存性能监控

内存是服务器的"临时存储仓库",内存不足会导致系统启用交换分区(swap),引发服务响应缓慢甚至崩溃。核心监控指标包括物理内存使用率、交换分区使用率、内存缓存状态

2.2.1 基础工具:free

free命令用于查看系统内存和交换分区的使用情况,无特殊权限要求 ,常用参数-h(人类可读格式)。

命令格式

复制代码
free -h

输出示例

复制代码
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2  0      0 123456  10240 567890    0    0     5    10  150  300 15  2 82  1  0

关键指标解读

  • total:物理内存总容量;

  • used:已使用内存容量(包含应用和系统占用);

  • free:完全空闲的内存容量;

  • buff/cache:内核用于磁盘缓存的内存,这部分内存可被应用程序随时征用,并非真正占用

  • available:实际可被应用程序使用的内存容量(核心参考指标);

  • Swap:交换分区使用率,持续高于20%表示物理内存不足,需警惕。

常见误区

新手常误将buff/cache视为"已占用内存",看到free值小就认为内存不足,实际应重点关注availableSwap使用率。

2.2.2 结合进程:top/ps

若发现内存使用率过高,可通过topM键按内存使用率排序进程,或使用ps命令定位高内存进程:

命令格式(查看进程内存占用前10名):

复制代码
ps aux --sort=-%mem | head -10

2.3 磁盘I/O性能监控

磁盘I/O是服务器性能的常见瓶颈,尤其是数据库、文件服务器等场景。核心监控指标包括磁盘使用率、I/O读写速度、I/O等待时间

2.3.1 磁盘空间监控:df

df命令用于查看文件系统磁盘空间使用情况,无特殊权限要求 ,常用参数-h(人类可读格式)、-i(查看inode使用率)。

命令格式

复制代码
df -h

输出示例

复制代码
Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 30G 20G 60% / /dev/sdb1 500G 100G 400G 20% /data

关键指标

  • Use%:磁盘使用率,建议阈值不超过85%,过高会影响I/O性能,甚至导致无法写入数据;

  • df -i显示inode使用率100%,即使磁盘空间充足,也无法创建新文件(常见于小文件过多的场景)。

2.3.2 目录大小分析:du

du命令用于查看目录或文件的磁盘占用情况,无特殊权限要求 ,常用参数-h(人类可读)、-s(汇总大小)。

命令格式 (查看/var/log目录总大小):

复制代码
du -sh /var/log

实战技巧 (查找/data目录下最大的前5个目录):

复制代码
du -h --max-depth=1 /data | sort -rh | head -5
2.3.3 I/O性能监控:iostat

iostat(Input/Output Statistics)用于监控磁盘I/O的读写性能,需安装sysstat工具包yum install -y sysstat),无特殊权限要求

命令格式(采样间隔2秒,共采样5次,显示扩展信息):

复制代码
iostat -x 2 5

关键输出解读 (以sda磁盘为例):

复制代码
Device: rrqm/s wrqm/s rMB/s wMB/s r_await w_await rMB/s wMB/s %util sda 0.00 0.50 0.02 0.10 2.0 5.0 0.02 0.10 1.5
  • rMB/s/wMB/s:每秒磁盘读/写数据量;

  • r_await/w_await:读/写请求的平均等待时间(单位:毫秒),过高表示磁盘I/O压力大;

  • %util:磁盘设备的繁忙程度,持续高于80%表示磁盘I/O过载(如机械硬盘频繁随机读写、固态硬盘满负载写入)。

2.4 网络性能监控

网络是服务器与外部通信的桥梁,核心监控指标包括网络带宽使用率、连接状态、数据包收发情况

2.4.1 连接状态监控:ss

ss(Socket Statistics)是netstat的升级版,速度更快、功能更强,无特殊权限要求,常用于查看TCP/UDP连接状态。

命令格式(查看所有TCP连接):

复制代码
ss -tuln

参数说明

  • -t:TCP连接;

  • -u:UDP连接;

  • -l:监听状态的连接;

  • -n:以数字形式显示端口和IP,避免DNS解析,提升速度。

实战技巧(查看80端口的连接数):

复制代码
ss -tuln | grep ":80"
2.4.2 带宽监控:iftop

iftop是实时网络带宽监控工具,可查看每个网卡的流入/流出带宽,以及与外部IP的通信流量,需安装iftop工具包yum install -y iftop),需root权限

命令格式(监控eth0网卡):

复制代码
iftop -i eth0

关键输出解读

  • 顶部显示带宽刻度;

  • 中间列表显示本机与其他IP的实时流量;

  • 底部TX(发送)、RX(接收)、TOTAL(总计)统计带宽使用情况。

2.4.3 数据包监控:netstat(兼容旧习惯)

虽然ss更推荐,但netstat仍被广泛使用,需安装net-tools工具包(yum install -y net-tools)。

命令格式(查看网络接口的数据包收发情况):

复制代码
netstat -i

三、高级与综合监控工具

3.1 综合视图工具:htop

htoptop的增强版,界面更美观、功能更丰富,支持鼠标操作、进程树查看、颜色标记等,需安装htop工具包yum install -y htop)。

核心优势

  • 支持按CPU、内存、进程ID等多维度排序;

  • 可直接在界面上杀死进程、修改进程优先级;

  • 显示CPU核心数、负载状态等信息,更直观。

3.2 一站式监控工具:nmon

nmon(Nigel's Monitor)是一款免费的开源监控工具,可同时监控CPU、内存、磁盘、网络、进程等指标,支持数据导出为CSV格式,便于后续分析,需安装nmon工具包yum install -y nmon)。

使用方法

  1. 执行nmon进入监控界面;

  2. 按对应字母切换监控维度:

    1. c:CPU监控;

    2. m:内存监控;

    3. d:磁盘监控;

    4. n:网络监控;

  3. q退出。

3.3 历史数据分析工具:sar

sar(System Activity Reporter)是sysstat工具包的核心组件,可收集、存储、分析系统历史性能数据,需安装sysstat默认每天自动收集数据 (存储路径/var/log/sa/)。

核心用法

  1. 查看历史CPU数据(查看当天10点的CPU统计,采样间隔10分钟):

sar -u -f /var/log/sa/sa20 10:00:00 10

  1. 查看历史内存数据

    sar -r -f /var/log/sa/sa20

  2. 实时收集数据(采样间隔5秒,共采样10次,保存到文件):

    sar -n DEV 5 10 -o sar_data.txt

四、自动化监控与平台化建议

4.1 Shell脚本自动化监控

对于中小规模服务器集群,可编写Shell脚本定时收集性能数据,输出报告或发送告警。

示例脚本(监控CPU、内存、磁盘使用率,阈值告警):

复制代码
#!/bin/bash
# CPU使用率阈值
CPU_THRESHOLD=80
# 内存使用率阈值
MEM_THRESHOLD=85
# 磁盘使用率阈值
DISK_THRESHOLD=85

# 获取CPU使用率(取15分钟负载的近似值,或用top计算)
CPU_USAGE=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1 | awk -F. '{print $1}')
# 获取内存使用率
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}' | awk -F. '{print $1}')
# 获取根分区磁盘使用率
DISK_USAGE=$(df -h / | grep / | awk '{print $5}' | cut -d'%' -f1)

# 告警逻辑
if [ $CPU_USAGE -gt $CPU_THRESHOLD ]; then
    echo "告警:CPU使用率过高,当前$CPU_USAGE%"
fi
if [ $MEM_USAGE -gt $MEM_THRESHOLD ]; then
    echo "告警:内存使用率过高,当前$MEM_USAGE%"
fi
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
    echo "告警:根分区磁盘使用率过高,当前$DISK_USAGE%"
fi

使用方法

  1. 保存脚本为monitor.sh,添加执行权限:chmod +x monitor.sh

  2. 添加到crontab定时执行(每天整点执行):

    0 * * * * /root/monitor.sh >> /var/log/monitor.log 2>&1

4.2 平台化监控推荐

对于大规模服务器集群,建议使用专业监控平台,实现可视化展示、阈值告警、自动扩容等功能:

  • Zabbix:开源免费,功能全面,支持自定义监控项和告警规则;

  • Prometheus + Grafana:云原生监控方案,适合容器化环境,可视化效果优秀;

  • Nagios:老牌监控工具,社区成熟,插件丰富。

五、总结与附录

5.1 核心知识点总结

  1. 监控核心维度:CPU、内存、磁盘I/O、网络,需结合多工具交叉验证;

  2. 关键指标阈值

    1. CPU负载平均值 ≤ CPU核心数;

    2. 内存available充足,Swap使用率 ≤ 20%;

    3. 磁盘使用率 ≤ 85%,%util ≤ 80%;

    4. 网络无异常丢包,带宽使用率无持续过载。

  3. 故障排查思路 :先看整体状态(top/vmstat)→ 定位瓶颈维度 → 查找具体进程/设备。

5.2 常用命令速查表

|-------|------------|------------------------------|
| 监控维度 | 核心工具 | 常用命令 |
| CPU | top、vmstat | topvmstat 2 5 |
| 内存 | free、top | free -htop -o %MEM |
| 磁盘空间 | df、du | df -hdu -sh /path |
| 磁盘I/O | iostat | iostat -x 2 5 |
| 网络连接 | ss | ss -tuln |
| 网络带宽 | iftop | iftop -i eth0 |
| 历史数据 | sar | sar -u -f /var/log/sa/saXX |

5.3 进一步学习资源

  1. 《Linux性能优化权威指南》:深入理解Linux性能底层原理;

  2. CentOS官方文档:掌握系统配置与调优最佳实践;

  3. Zabbix/Prometheus官方文档:学习平台化监控部署与配置。

六、写在最后

服务器性能监控是一项持续的工作,没有一劳永逸的方案。运维人员需要结合业务场景,建立适合自己的监控体系,不断积累实战经验。希望本文能帮助你夯实CentOS 7性能监控的基础,从容应对各类系统性能问题。

相关推荐
椰子今天很可爱2 小时前
仿照muduo库实现一个高并发服务器
linux·服务器·c++
yesyesyoucan2 小时前
安全工具集:一站式密码生成、文件加密与二维码生成解决方案
服务器·mysql·安全
小豆子范德萨2 小时前
cursor连接远程window服务器的WSL-ubuntu
运维·服务器·ubuntu
Xの哲學8 小时前
Linux grep命令:文本搜索的艺术与科学
linux·服务器·算法·架构·边缘计算
夜月yeyue9 小时前
Linux 调度类(sched_class)
linux·运维·c语言·单片机·性能优化
VekiSon10 小时前
Linux系统编程——IPC进程间通信:信号通信与共享内存
linux·运维·服务器
南山nash10 小时前
CentOs7 安装 Docker 详细步骤
linux·运维·docker·容器
徐先生 @_@|||10 小时前
Conda最基础使用命令
linux·windows·conda
ZHHHHHJ6610 小时前
LL层-PAST
运维·服务器·网络