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性能监控的基础,从容应对各类系统性能问题。

相关推荐
树℡独6 小时前
ns-3仿真之应用层(五)
服务器·网络·tcp/ip·ns3
嵩山小老虎6 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模7 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a41324477 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Configure-Handler7 小时前
buildroot System configuration
java·服务器·数据库
津津有味道7 小时前
易语言TCP服务端接收刷卡数据并向客户端读卡器发送指令
服务器·网络协议·tcp·易语言
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.8 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
Genie cloud8 小时前
1Panel SSL证书申请完整教程
服务器·网络协议·云计算·ssl
一只自律的鸡8 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
17(无规则自律)9 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考