判断服务器CPU和内存使用情况,最直接的方法是登录服务器执行系统自带命令或查看管理面板,其中Linux用top命令、Windows用任务管理器是最通用的入门操作。
很多朋友第一次接触服务器,听到“CPU满了”“内存不够”就头疼,其实这件事没想象中复杂,服务器不像手机,它没有好看的图形界面给你划拉,大多数时候你面对的是一个黑乎乎的终端窗口,但别慌,看懂CPU和内存使用情况,就像看汽车的仪表盘,学会认几个关键表盘就行,下面我把Linux和Windows两套系统的主流查看方法,以及怎么判断数值是否健康,一次讲清楚。
Linux服务器查看CPU和内存:几条命令走天下
Linux服务器占了互联网的大半壁江山,学会用命令查看资源是基本功,你不需要背一堆参数,先掌握下面这几个最常用的。
用top命令看实时动态
top是Linux里最经典的系统监控工具,执行后屏幕上会实时刷新数据,重点看两部分:最上面几行的统计信息区和下面的进程列表区。
- 统计信息区里,
load average后面的三个数字代表1分钟、5分钟、15分钟的平均负载,这个数值除以CPU核心数,如果长期大于1,说明系统可能有点忙不过来了。 %Cpu(s)那一行,us是用户进程占用,sy是系统内核占用,id是空闲比例,如果id长期接近0,说明CPU快被榨干了。- 进程列表区按CPU使用率排序,按
P键可以切换按内存排序,按M键直接按内存占用排序,这样能快速找出是哪个程序在“吃”资源。
用free命令精确查看内存
top虽然能看到内存总量和已用量,但不够直观,单独执行free -h(-h参数是人性化显示单位),你会看到两行数据:Mem行是物理内存,Swap行是交换分区。
- 注意看
available这一列,它才是系统真正可用的内存,因为Linux会尽量把空闲内存用作缓存,高不代表不够用。used
- 如果
Swap被大量使用,说明物理内存确实吃紧了,系统开始拿硬盘当内存用,性能会明显下降。
用vmstat和pidstat做深度体检
top适合快速瞄一眼,想系统性地观察趋势,可以用vmstat 1 5,这个命令每秒采样一次,连续采5次,重点看si和so两列,如果数值经常不是0,说明内存和硬盘之间频繁交换数据,内存大概率是瓶颈。
如果想定位到具体进程,pidstat比top更细腻,执行pidstat -r 1可以按内存占用排序显示进程,执行pidstat -u 1按CPU占用排序,它还能把结果输出到文件里做历史对比,排查那种“半夜定时任务把服务器跑满”的问题特别好用。
云端服务器和面板用户的快捷方式
如果你用的是简米云、酷番云这类云服务器,登录网页控制台就能看到CPU和内存的使用曲线图,还能设置报警阈值,比如CPU超过80%就短信通知你,如果你装了宝塔面板或Cockpit这类可视化管理工具,直接在网页上就能看到实时折线图,不用敲命令,适合不熟悉终端的用户。
Windows服务器查看资源占用:图形界面和命令行两手抓
Windows Server虽然也有图形界面,但很多生产环境为了省资源,装的是Core版,只有命令行,所以两种方式都得会。
任务管理器是最快的入口
按Ctrl + Shift + Esc打开任务管理器,点“性能”选项卡,CPU和内存的使用率、速度、插槽数一目了然,点开“进程”选项卡,按“内存”或“CPU”列排序,马上能揪出是哪个应用在捣乱。
但任务管理器有个短板:它看的是瞬时值,对于那种“每隔几分钟飙高一次”的问题,你蹲在那里等半天也未必抓得到,这时候需要用下面的工具。
资源监视器和性能监视器
在任务管理器底部点“打开资源监视器”,能看到更细的CPU、内存、磁盘分项数据,还能看到每个进程的线程数和句柄数,性能监视器(
perfmon.msc)则是个进阶工具,可以添加计数器,比如Processor Time和Available MBytes,把数据记录成日志,跑个一两天再分析,适合做压力测试或排查间歇性卡顿。
命令行下的systeminfo和typeperf
如果你面对的是没有图形界面的Windows Server Core,可以用systeminfo命令查看系统信息,但它的内存数据是静态的,更实用的是typeperf命令,比如typeperf "MemoryAvailable MBytes" -si 5,每5秒记录一次可用内存,对于CPU,可以用wmic cpu get loadpercentage获取当前CPU使用率,不过WMIC在新版系统里逐渐被淘汰了,PowerShell的Get-Counter是更主流的替代方案。
怎么判断数值算不算“异常”:别被数字吓到
很多人一看CPU用了80%就慌了,其实要分场景。服务器CPU和内存使用情况没有绝对标准,判断是否异常要看你的业务类型和趋势。
- CPU使用率长期稳定在70%-80%,对数据库服务器或Web服务器来说属于高负载但尚可运行,如果是游戏服务器或计算型任务,这个数值可能反而是常态。
- 内存使用率看起来“爆满”,在Linux上特别容易误判,前面说了,Linux会拿空闲内存做缓存,
free -g里used显示90%,但available还有一大半,这种情况完全不用管。 - 真正的红灯信号是:CPU使用率长期接近100%且load average持续高于CPU核心数,或者Swap被大量占用、内存的
available持续走低,遇到这两种情况,说明硬件资源确实到了瓶颈。
排查思路:先看趋势,再定位进程
发现异常后,别急着重启服务器,按照“先全局、后局部”的思路来:先用top或vmstat看整体趋势,确认是持续高还是脉冲式高;再用pidstat或任务管理器定位到具体进程;最后分析这个进程是不是业务必需的,如果是程序Bug,该修代码修代码,如果是正常业务增长,就该考虑加配置了。
日常监控的偷懒技巧:别总手动敲命令
生产环境的服务器不可能天天登录去看,学会配置简单的监控告警很重要,Linux上可以用cron定时把top和free的输出追加到日志文件,再写个脚本检查数值超限就发邮件,Windows上可以用任务计划程序触发PowerShell脚本,云服务商的控制台也自带监控报警功能,设置好阈值后,有问题主动通知你,比天天盯终端省心得多。
服务器CPU和内存使用情况常见问题解答
服务器CPU使用率一直100%会怎么样?
CPU长期满载会让系统响应变慢,请求排队时间变长,但一般不会直接宕机,真正的风险是温度升高,可能触发硬件保护机制导致自动重启,先定位是哪个进程占用的,如果是正常业务高峰,考虑升级CPU或做负载均衡;如果是异常进程,比如被挖矿程序入侵,需要立刻处理。
服务器内存使用率高和CPU高哪个更值得担心?
没有绝对的答案,看你的业务场景,CPU高通常意味着计算量大,可能只是需要更强的算力;内存高如果触发了Swap交换,性能会断崖式下跌,因为硬盘读写速度比内存慢几个数量级,行业共识认为,内存耗尽导致的性能问题往往比CPU满载更棘手,因为系统可能直接OOM(内存溢出)杀进程。
怎么看服务器CPU是几核几线程?
Linux下执行nproc直接显示逻辑CPU数量,执行lscpu能看到架构、核心数、线程数等详细信息,Windows下在任务管理器“性能”选项卡的CPU页面,会显示“逻辑处理器”数量,这个信息对判断load average是否正常很重要,比如4核机器负载到4就说明跑满了,16核机器负载到4还很轻松。
看服务器CPU和内存使用情况,核心就一句话:学会用命令或工具看实时数据,结合业务场景判断趋势,最后用监控告警代替人工盯守。 记住这几个关键命令和判断标准,你就能从“看不懂数字”进阶到“提前发现隐患”,服务器的脾气摸透了,它自然就听话了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/602780.html




