top
、htop
、vmstat
、iostat
,或图形化工具如 Grafana
结合 Prometheus
,重点关注 CPU 使用率、内存占用、磁盘 I/O 及网络流量等核心指标。了解您的服务器运行状况:全面指南
服务器是任何在线业务或应用的核心引擎,它的性能直接影响用户体验、网站速度、应用响应能力,甚至业务收入,定期监控和评估服务器性能是系统管理员、开发人员以及任何依赖稳定在线服务的人员的必备技能,本文将详细介绍多种查看服务器性能的方法,涵盖从基础命令到高级监控系统,帮助您全面掌握服务器的运行状况。
基础命令行工具(实时/快照视图)
这些工具通常内置于Linux/Unix服务器中(Windows有类似工具如perfmon
和Task Manager
),提供服务器当前状态的实时或历史快照,是快速诊断问题的第一线工具。
-
top
/htop
(推荐)- 作用: 实时动态显示系统中进程的资源占用情况(CPU、内存、运行时间等),并按资源使用率排序。
- 关键指标:
%Cpu(s)
: 显示用户态(us
)、系统态(sy
)、空闲(id
)、等待I/O(wa
)、软硬中断(hi
,si
)、虚拟机(st
)等CPU时间占比。wa
高通常表示磁盘I/O瓶颈。KiB Mem
/KiB Swap
: 物理内存和交换空间的总量、已用、空闲、缓存/缓冲情况,关注free
内存是否过低,swap
是否被频繁使用(表示物理内存不足)。- 进程列表:
PID
(进程ID),USER
(所有者),%CPU
,%MEM
,TIME+
(累计CPU时间),COMMAND
(命令/进程名)。htop
提供更友好的彩色界面、鼠标支持和直观的进程树视图。
- 用法: 直接在终端输入
top
或htop
(需安装),按q
退出。
-
vmstat
(Virtual Memory Statistics)- 作用: 报告关于进程、内存、分页、块I/O、陷阱(中断)和CPU活动的统计信息,擅长显示系统瓶颈。
- 关键指标 (常用
vmstat 1
每秒刷新一次):procs
:r
(运行队列长度 – 等待CPU的进程数,持续大于CPU核心数表示CPU饱和),b
(不可中断睡眠进程数 – 通常等待I/O)。memory
:swpd
(已用交换空间),free
(空闲内存),buff
(用作缓冲的内存),cache
(用作缓存的内存)。swap
:si
(每秒从磁盘换入内存的量),so
(每秒从内存换出到磁盘的量)。si/so
持续大于0表示内存严重不足。io
:bi
(每秒从块设备接收的块数 – 读),bo
(每秒发送到块设备的块数 – 写),高值表示磁盘I/O繁忙。system
:in
(每秒中断数,包括时钟),cs
(每秒上下文切换次数),过高可能表示进程过多或配置问题。cpu
:us
,sy
,id
,wa
,st
(同top
解释)。
- 用法:
vmstat [间隔秒数] [次数]
,如vmstat 1 5
每秒报告一次,共5次。
-
free
- 作用: 快速查看内存(物理内存和交换空间)的使用情况。
- 关键指标 (常用
free -h
以人类可读格式显示):total
: 总内存。used
: 已用内存(包括被缓存/缓冲占用的部分)。free
: 完全未被使用的内存。shared
/buff/cache
: 共享内存 / 被内核缓冲和缓存占用的内存。available
: 最重要指标! 估算可用于启动新应用程序的内存总量(考虑了缓存可回收部分),如果available
很低,系统可能开始使用swap
。
- 用法:
free [-b|-k|-m|-g|-h]
(选择单位:字节, KB, MB, GB, 人类可读)。
-
iostat
(I/O Statistics)- 作用: 监控系统输入/输出设备负载,报告CPU利用率和磁盘I/O统计信息,需安装
sysstat
包。 - 关键指标 (常用
iostat -dx 1
每秒显示扩展设备统计):%util
: 设备利用率百分比,接近100%表示设备接近饱和,是I/O瓶颈的强信号。await
: 平均每次I/O请求的等待时间(毫秒),包括队列等待和服务时间,高值表示设备慢或过载。r/s
,w/s
: 每秒读/写请求数。rkB/s
,wkB/s
: 每秒读/写数据量(KB)。avgqu-sz
: 平均I/O队列长度,持续大于1可能表示设备饱和。
- 用法:
iostat [-c] [-d] [-x] [间隔] [次数]
。
- 作用: 监控系统输入/输出设备负载,报告CPU利用率和磁盘I/O统计信息,需安装
-
netstat
/ss
(推荐ss
)- 作用: 显示网络连接、路由表、接口统计等信息。
ss
是更现代、更快的替代品。 - 关键用途:
- 查看活动连接数:
ss -s
(统计摘要) 或ss -tunap
(显示TCP/UDP连接,带进程和用户)。 - 查看监听端口:
ss -tunlp
。 - 查看接口流量统计:
netstat -i
或ip -s link
(更推荐)。
- 查看活动连接数:
- 用法:
ss [选项]
/netstat [选项]
。
- 作用: 显示网络连接、路由表、接口统计等信息。
-
df
/du
df
(Disk Free): 报告文件系统磁盘空间使用情况。df -h
(人类可读) 查看各分区/挂载点总空间、已用、可用及使用百分比。务必监控Use%
,接近100%会引发严重问题。du
(Disk Usage): 估算文件和目录的磁盘使用量,常用于定位占用空间过大的目录,如du -sh /*
查看根目录下各一级目录大小。
-
uptime
- 作用: 快速查看服务器运行时间、当前登录用户数以及系统平均负载。
- 关键指标:
load average
: 过去1分钟、5分钟、15分钟的系统平均负载,表示处于可运行状态(使用CPU或等待CPU)和不可中断状态(等待I/O)的平均进程数。理想情况是每个核心对应负载小于1。 4核CPU,负载长期高于4表示系统过载。
综合性能监控工具(历史数据分析)
命令行工具提供快照,而以下工具记录历史数据,便于分析趋势、定位峰值和进行容量规划。
-
sar
(System Activity Reporter)- 作用:
sysstat
包的核心组件。收集、报告和保存系统活动信息(CPU、内存、磁盘、网络、进程等),数据默认每10分钟收集一次,由cron
调度。 - 强大之处: 可以回溯查看历史性能数据(默认保存一个月),是事后分析性能问题的利器。
- 用法示例:
sar -u 1 3
: 查看CPU利用率,每秒1次,共3次(类似vmstat
的CPU部分)。sar -r 1 3
: 查看内存和交换空间使用情况。sar -b 1 3
: 查看I/O和传输速率统计。sar -n DEV 1 3
: 查看网络接口统计。sar -f /var/log/sa/saXX
: 查看指定日期(XX为日期号,如05)的历史数据报告。
- 配置:
/etc/sysconfig/sysstat
(或类似路径) 可调整数据收集频率和保存时长。
- 作用:
-
nmon
(Nigel’s Monitor)- 作用: 强大的交互式性能监控工具,在一个屏幕上整合显示CPU、内存、磁盘、网络、内核、文件系统、进程等大量信息,也可将数据捕获到CSV文件供后续分析。
- 优势: 界面直观,信息集中,适合实时监控和快速概览,按快捷键切换视图(如
c
=CPU,m
=内存,d
=磁盘,n
=网络)。 - 用法: 运行
nmon
进入交互模式,捕获数据:nmon -f -s <间隔秒> -c <次数> -m <输出目录>
。
日志分析(深度诊断)
系统日志(如/var/log/syslog
, /var/log/messages
)和特定应用日志(如Web服务器、数据库日志)包含丰富的错误、警告和事件信息,是诊断性能问题根源(如错误配置、资源耗尽错误、慢查询、应用崩溃)的关键。
- 常用工具:
grep
,tail -f
(实时跟踪),less
,awk
,sed
等文本处理工具,以及更强大的集中式日志管理系统如 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Graylog。
图形化监控系统(持续监控与告警)
对于生产环境,必须部署持续监控系统,提供可视化仪表盘、历史趋势图、阈值告警(邮件、短信、钉钉、微信等)功能。
-
经典组合:
- Prometheus: 开源的强大监控和时序数据库,采用拉取(Pull)模型,非常适合动态云环境,功能强大,生态丰富。
- Grafana: 顶级的开源数据可视化和仪表盘平台,支持多种数据源(包括Prometheus),创建美观、直观的性能图表。
- Node Exporter: Prometheus的官方代理,安装在目标服务器上,收集系统指标(CPU, 内存, 磁盘, 网络等)暴露给Prometheus抓取。
- Alertmanager: (通常与Prometheus配合) 处理由Prometheus等客户端发送的告警,进行去重、分组、静默,并路由到不同的接收器(邮件、Webhook等)。
-
其他流行方案:
- Zabbix: 成熟的企业级开源监控解决方案,功能全面(监控、告警、可视化),支持主动/被动监控,有完善的Web界面。
- Nagios / Icinga: 老牌监控系统,以强大的告警功能和丰富的插件生态著称,核心关注服务/主机状态(UP/DOWN),可通过插件扩展性能监控。
- Datadog / New Relic / Dynatrace: 商业的SaaS或本地部署的APM (应用性能监控) 和基础设施监控平台,提供开箱即用的深度监控、应用链路追踪、用户体验监控等高级功能,集成度高,但需付费。
云平台监控工具
如果您使用的是阿里云、酷盾、华为云、AWS、Azure、GCP等云服务商:
- 务必优先使用云平台提供的原生监控服务!
- 阿里云: 云监控(CloudMonitor)
- 酷盾: 云监控(Cloud Monitor)
- 华为云: 云监控服务(Cloud Eye)
- AWS: Amazon CloudWatch
- Azure: Azure Monitor
- GCP: Cloud Monitoring (原Stackdriver)
- 优势:
- 深度集成: 无需安装代理(或自动安装),即可监控云服务器(ECS/VM)、云数据库(RDS)、负载均衡(SLB/ALB)、存储等核心云产品的关键指标。
- 开箱即用: 提供预设的仪表盘和告警规则。
- 成本: 通常提供一定额度的免费基础监控。
- 统一视图: 在一个平台监控所有云资源。
如何选择方法?
- 快速排查当前问题: 使用
top/htop
,vmstat
,free
,iostat
,ss
等命令行工具。 - 分析历史性能趋势/问题: 使用
sar
或查询监控系统(如Prometheus+Grafana, 云监控)的历史数据。 - 日常运维与保障: 必须部署 图形化监控系统(如Prometheus+Grafana, Zabbix, 云监控)进行7×24持续监控并配置有效告警。
- 深度诊断: 结合监控指标分析系统日志和应用日志。
- 云服务器: 首要使用 云服务商提供的原生监控服务。
重要提示:
- 理解基线: 了解您的服务器在“正常”负载下的性能指标(基线),才能有效识别异常。
- 关注关键指标: CPU利用率、内存使用率(特别是
available
)、磁盘I/O(%util
,await
)、磁盘空间使用率、网络流量/错误、系统负载(load average
)。 - 关联分析: 一个性能问题(如应用变慢)可能由多种原因引起(CPU、内存、磁盘I/O、网络、应用本身),需要关联查看多个指标。
- 监控是手段,优化是目的: 监控是为了发现瓶颈,最终目标是通过优化配置、升级硬件、调整应用或架构来解决瓶颈。
- 安全操作: 在生产环境执行命令需谨慎,避免影响线上服务,理解命令含义后再执行。
掌握查看服务器性能的方法是维护稳定高效在线服务的基础,从基础命令行工具的快速诊断,到sar
/nmon
的历史分析,再到日志的深度挖掘,最终落脚于图形化监控系统和告警的持续保障,构成了一个完整的服务器性能监控体系,对于云服务器,充分利用云平台的原生监控工具是高效且经济的选择,持续监控、理解基线、关联分析、及时优化,方能确保您的服务器始终处于最佳运行状态,为用户提供流畅可靠的体验。
引用说明:
- 本文中涉及的Linux命令行工具(
top
,htop
,vmstat
,free
,iostat
,netstat
,ss
,df
,du
,uptime
,sar
,nmon
)的功能描述和常用参数参考了各自的man
手册页(可通过man <命令>
查看)以及广泛的系统管理员实践经验总结。 - 关于系统平均负载(
load average
)的解释参考了Linux内核文档和相关权威技术文章(如Brendan Gregg的博客)。 - 提到的开源监控解决方案(Prometheus, Grafana, Node Exporter, Alertmanager, Zabbix, Nagios, Icinga, ELK Stack, Graylog)的描述基于其官方文档和社区公认的实践。
- 云平台监控工具部分(阿里云云监控、酷盾云监控、华为云云监控服务、AWS CloudWatch、Azure Monitor、GCP Cloud Monitoring)的功能描述参考了各云服务商的官方产品文档和介绍。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/25458.html