监控服务器占用可保障服务稳定运行,及时发现资源瓶颈(如CPU、内存、磁盘、网络过载),预防宕机或性能下降,它有助于优化资源配置、控制成本、识别安全威胁(如异常活动),并确保业务连续性和用户体验。
服务器运行变慢了?网站加载卡顿?应用程序响应延迟?这些往往是服务器资源(如CPU、内存、磁盘、网络)达到瓶颈的信号,及时、准确地查看服务器资源占用情况,是系统管理员、开发人员乃至需要了解自身应用运行状况的用户必备的技能,本指南将详细介绍在不同操作系统环境下,如何有效地查看和分析服务器资源占用,帮助你快速定位问题根源。
- 性能优化: 识别资源消耗大户,为优化代码、配置或升级硬件提供依据。
- 故障排除: 快速诊断服务器卡顿、服务崩溃、响应缓慢的根本原因(是CPU爆满、内存耗尽还是磁盘IO瓶颈?)。
- 容量规划: 了解资源使用趋势,预测未来需求,合理规划服务器扩容或云资源调整。
- 成本控制: 避免为未充分利用的资源付费(尤其在云环境),或防止因资源不足导致业务损失。
- 安全保障: 发现异常的高资源占用进程,可能是恶意软件或入侵活动的迹象。
核心监控指标:
在查看服务器占用时,主要关注四大核心资源:
- CPU 使用率: 处理器处理任务的繁忙程度,持续接近100%通常意味着CPU是瓶颈。
- 内存 (RAM) 使用率: 包括已用内存、空闲内存、缓存/缓冲内存,需要关注的是实际可用内存是否紧张,以及是否有内存泄漏(使用率持续增长不释放)。
- 磁盘 I/O: 磁盘读写速度和操作频率,高磁盘使用率(%util)或长等待队列(await)会显著拖慢系统。
- 网络 I/O: 网络接口的流入和流出带宽,带宽饱和或高错误/丢包率会影响网络服务。
- 进程/服务: 具体是哪些进程或服务在消耗这些资源。
如何查看服务器占用(按操作系统):
Linux / Unix-like 系统 (如 CentOS, Ubuntu, Debian, Fedora)
Linux 提供了丰富的命令行工具,是服务器监控的基石。
- 
top命令 (实时进程监控)- 功能: 最常用、最基础的实时动态监控工具,显示系统摘要信息(负载、任务数、CPU、内存)和进程列表。
- 使用: 直接在终端输入 top。
- 关键信息解读:
- 顶部区域 (系统摘要):
- load average: 系统负载(1分钟、5分钟、15分钟平均值),负载值接近或超过CPU核心数表示系统繁忙。
- %Cpu(s): CPU 使用率细分 (- us=用户空间,- sy=内核空间,- ni=低优先级用户,- id=空闲,- wa=等待I/O,- hi=硬件中断,- si=软件中断,- st=被虚拟机偷取)。
- KiB Mem: 物理内存使用 (- total,- free,- used,- buff/cache)。注意: Linux会利用空闲内存做缓存(- buff/cache),这部分在应用需要时会被释放,所以通常看- available(可用内存) 更准确(较新- top版本显示)。
- KiB Swap: 交换空间使用,频繁使用Swap表示物理内存严重不足,性能会急剧下降。
 
- 进程列表区域:
- PID: 进程ID。
- USER: 进程所有者。
- %CPU: 进程占用的CPU百分比。
- %MEM: 进程占用的物理内存百分比。
- VIRT: 进程使用的虚拟内存总量 (KB)。
- RES: 进程使用的、未被换出的物理内存大小 (KB) – 常关注此项。
- SHR: 共享内存大小 (KB)。
- TIME+: 进程使用的总CPU时间。
- COMMAND: 启动进程的命令行或程序名称。
 
 
- 顶部区域 (系统摘要):
- 交互操作 (在 top运行时按键):- P(大写): 按CPU使用率排序。
- M(大写): 按内存(RES)使用率排序。
- 1: 显示所有CPU核心的单独使用情况。
- k: 终止指定PID的进程 (需谨慎!)。
- q: 退出- top。
 
 
- 
htop命令 (增强版 top)- 功能: top的现代化替代品,提供彩色显示、更直观的布局、鼠标支持、垂直/水平滚动、树状视图查看进程关系等。强烈推荐安装使用。
- 安装 (如Ubuntu): sudo apt install htop
- 使用: 输入 htop,界面更友好,操作逻辑与top类似(排序、筛选、杀进程等更方便)。
 
- 功能: 
- 
vmstat命令 (虚拟内存统计)- 功能: 报告关于进程、内存、分页、块IO、陷阱(中断)和CPU活动的信息,擅长展示系统整体瓶颈,特别是内存和I/O。
- 使用: vmstat [间隔秒数] [报告次数](vmstat 1 5每秒报告一次,共5次)。
- 关键列解读 (输出通常有多列):
- procs:- r=运行队列长度(等待运行的进程数),- b=不可中断睡眠的进程数(通常与I/O相关)。
- memory:- swpd=使用的交换空间大小,- free=空闲内存,- buff=用作缓冲的内存,- cache=用作缓存的内存。
- swap:- si=每秒从磁盘读入swap的大小 (swap in),- so=每秒写入swap的大小 (swap out)。- si/so持续大于0是内存不足的强烈信号。
- io:- bi=每秒从块设备接收的块数 (读磁盘),- bo=每秒发送到块设备的块数 (写磁盘),反映磁盘活动。
- system:- in=每秒中断数(包括时钟中断),- cs=每秒上下文切换次数,过高可能表示进程争抢CPU激烈。
- cpu:- us,- sy,- id,- wa,- st含义同- top。- wa(I/O等待)高是磁盘瓶颈的标志。
 
 
- 
free命令 (内存使用情况)- 功能: 快速查看系统物理内存和交换空间的使用情况。
- 使用: free -h(-h选项以人类可读格式显示,如G, M)。
- 关键行解读:
- total: 总内存。
- used: 已使用的内存 (包括被应用程序和缓存/缓冲占用的)。
- free: 完全空闲的内存。
- shared/- buff/cache: 共享内存 / 被内核缓冲和缓存使用的内存。
- available: 最重要! 估算的、可供启动新应用程序而无需交换的内存,这是判断内存是否紧张的关键指标。
 
 
- 
iostat命令 (I/O 统计)- 功能: 监控系统磁盘I/O活动和CPU使用情况,特别擅长诊断磁盘瓶颈。
- 安装 (通常属于 sysstat包):sudo apt install sysstat(Ubuntu/Debian) /sudo yum install sysstat(CentOS/RHEL)
- 使用: iostat -dx [间隔秒数] [报告次数](iostat -dx 1 3)。-d显示设备报告,-x显示扩展统计。
- 关键扩展列解读 (针对每个磁盘设备如 sda,nvme0n1):- %util: 设备带宽利用率百分比(设备繁忙时间比率)。接近100%表示该设备I/O饱和,是瓶颈。
- r/s,- w/s: 每秒读/写请求数。
- rkB/s,- wkB/s: 每秒读/写数据量 (KB)。
- await: 平均I/O请求等待时间(毫秒),包括队列等待和服务时间。值高表示设备慢或过载。
- aqu-sz: 平均请求队列长度。值高也是设备饱和的信号。
 
 
- 
df命令 (磁盘空间占用)- 功能: 报告文件系统的磁盘空间使用情况。
- 使用: df -h(-h人类可读格式),关注Use%列,接近100%需要清理或扩容。
- 特别注意 inode 使用: df -i,磁盘空间没满但无法创建文件?可能是inode耗尽了(常见于存在大量小文件的系统)。
 
- 
du命令 (目录/文件空间占用)- 功能: 估算文件和目录的磁盘使用空间,用于定位具体哪个目录或文件占用了大量空间。
- 使用: du -sh [目录路径](-s总计,-h人类可读)。du -sh /var/log查看日志目录总大小。du -h --max-depth=1 /some/path查看某路径下一级子目录的大小。
 
- 
nethogs命令 (按进程的网络流量)- 功能: 按进程实时显示网络带宽使用情况(需要root权限)。
- 安装: sudo apt install nethogs/sudo yum install nethogs
- 使用: sudo nethogs [网络接口名](如sudo nethogs eth0),直接显示哪些进程在消耗网络带宽。
 
- 
iftop命令 (按连接的网络流量)- 功能: 实时显示网络接口的带宽使用情况,按主机对(连接)进行排序(需要root权限)。
- 安装: sudo apt install iftop/sudo yum install iftop
- 使用: sudo iftop -i [网络接口名](如sudo iftop -i eth0),显示哪些IP地址之间的连接占用了大量带宽。
 
Windows Server 系统
Windows 提供了图形化工具和强大的命令行工具。
- 
任务管理器 (Task Manager) - 打开方式: Ctrl+Shift+Esc或Ctrl+Alt+Del选择“任务管理器”。
- 功能:
- 进程 (Processes) 选项卡: 查看所有运行中进程的CPU、内存、磁盘、网络占用,可点击列标题排序。
- 性能 (Performance) 选项卡:
- CPU: 实时使用率图表、核心数、速度、进程/线程/句柄数。
- Memory: 已用/可用内存、提交量、缓存、分页池/非分页池、速度、插槽使用。
- Disk: 每个物理磁盘或分区的活动时间、读写速度、队列长度。
- Ethernet/- Wi-Fi: 网络适配器的发送/接收速度、使用率。
 
- 用户 (Users) 选项卡: 查看不同登录用户会话的资源占用。
- 启动 (Startup) 选项卡: 管理开机自启动程序(影响启动速度和后台占用)。
 
- 优点: 直观易用,信息全面,是快速查看的首选。
 
- 打开方式: 
- 
资源监视器 (Resource Monitor) - 打开方式: 在“任务管理器”的“性能”选项卡底部点击“打开资源监视器”,或运行 resmon。
- 功能: 比任务管理器更详细、更强大的监控工具。
- 概述 (Overview) 选项卡: 汇总CPU、磁盘、网络、内存的关键指标和占用最高的进程。
- CPU 选项卡: 详细进程列表、关联句柄、关联模块(DLL)、服务关联,可查看每个进程的线程活动。
- 内存 选项卡: 进程内存使用详情(工作集、提交、硬错误/秒 – 硬错误高表示内存不足导致频繁调页)、物理内存使用情况。
- 磁盘 选项卡: 进程的磁盘活动(读写速度、响应时间)、磁盘活动队列、存储逻辑卷和物理磁盘的活动。
- 网络 选项卡: 进程的网络活动(发送/接收速度)、TCP连接、监听端口。是排查网络占用和端口占用的利器。
 
- 优点: 深度诊断的神器,能关联进程与资源(如哪个进程在读写哪个文件,哪个进程建立了哪个网络连接)。
 
- 打开方式: 在“任务管理器”的“性能”选项卡底部点击“打开资源监视器”,或运行 
- 
性能监视器 (Performance Monitor / perfmon) - 打开方式: 运行 perfmon。
- 功能: 最强大的内置监控工具,用于:
- 实时监控: 添加计数器(如 Processor(_Total)\% Processor Time,Memory\Available MBytes,PhysicalDisk(_Total)\% Disk Time,Network Interface(*)\Bytes Total/sec)到图表中实时查看。
- 数据收集器集: 创建自定义或使用系统自带的收集器集(如“System Diagnostics”),记录一段时间内的性能数据,生成报告用于事后分析。
- 性能警报: 设置当特定计数器超过阈值时触发警报(如CPU持续5分钟>90%时发邮件)。
 
- 实时监控: 添加计数器(如 
- 优点: 极其灵活和强大,适合长期监控、基线建立和深度性能分析。
 
- 打开方式: 运行 
- 
PowerShell 命令 - 获取进程信息: Get-Process | Sort-Object CPU -Descending | Select-Object -First 10(按CPU降序取前10进程)
- 获取CPU使用率: Get-Counter '\Processor(_Total)\% Processor Time'(单次) 或Get-Counter '\Processor(_Total)\% Processor Time' -Continuous(连续)
- 获取内存信息: Get-Counter '\Memory\Available MBytes'(可用内存MB) /Get-Counter '\Memory\% Committed Bytes In Use'(提交内存使用率)
- 获取磁盘信息: Get-Counter '\PhysicalDisk(_Total)\% Disk Time'(磁盘活动时间百分比) /Get-Counter '\PhysicalDisk(_Total)\Avg. Disk Queue Length'(平均磁盘队列长度)
- 获取网络信息: Get-NetAdapterStatistics | Select-Name, ReceivedBytes, SentBytes(查看网卡总收发字节数)
- 优点: 可编写脚本实现自动化监控和报告。
 
- 获取进程信息: 
跨平台/高级监控方案
对于需要长期监控、历史数据分析、可视化、集中管理多台服务器或设置告警的场景,应考虑专业监控系统:
- 开源方案:
- Prometheus + Grafana: 当前最流行的组合,Prometheus负责抓取和存储时间序列指标,Grafana提供强大的可视化仪表盘。
- Zabbix: 成熟的企业级监控解决方案,功能全面(自动发现、监控项、触发器、告警、可视化、模板)。
- Nagios / Icinga: 经典的网络和服务监控系统,擅长基于插件进行服务状态检查(HTTP, SMTP, SSH等)和告警。
 
- 云服务商方案: AWS CloudWatch, Azure Monitor, Google Cloud Operations (原Stackdriver) 等,深度集成各自云平台资源,也支持监控本地或混合云资源。
- 商业方案: Datadog, New Relic, Dynatrace, SolarWinds Server & Application Monitor 等,提供开箱即用的丰富功能、高级分析和APM能力,通常按主机或功能收费。
最佳实践与建议:
- 建立基线: 在服务器正常运行期间记录资源使用的“正常”水平(基线),这样异常波动更容易被发现。
- 综合判断: 不要只看单一指标,高CPU使用率不一定有问题,但如果同时伴随高I/O等待(wa)或长运行队列(r),则问题更严重,内存要重点看available(Linux) 或Available MBytes/Hard Faults/sec(Windows)。
- 关注趋势: 瞬时峰值是正常的,持续的高占用或不断增长的趋势才是需要警惕的,利用历史监控数据(如 sar命令或监控系统)分析趋势。
- 定位根源进程: 发现资源瓶颈后,使用 top/htop/ps(Linux) 或 任务管理器/资源监视器 (Windows) 找出消耗资源最多的具体进程,分析该进程是否正常业务所需。
- 理解缓存/缓冲: Linux 会充分利用内存做磁盘缓存(cache)和缓冲(buffer),这是提高性能的设计,这部分内存在应用程序需要时会被快速释放,不要看到used高就惊慌,关键看available或free + buff/cache是否充足,以及swap使用情况。
- 警惕内存泄漏: 如果某个进程的内存占用 (RESin Linux,Working Setin Windows) 随时间持续、无限制地增长,即使没有新任务,这很可能是内存泄漏,需要修复程序。
- 磁盘空间与inode: 定期检查磁盘空间 (df -h) 和 inode 使用 (df -i),设置告警阈值(如 >80%)。
- 利用专业工具: 对于生产环境,强烈建议部署专业的监控系统(如 Prometheus+Grafana, Zabbix),实现自动化、可视化、告警
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9220.html
 
                 
        