查询服务器的CPU和内存使用情况,Linux下用top和free命令最直接,Windows下用任务管理器或typeperf命令,这是无需安装额外工具就能得到准确结果的常规方法。
很多朋友第一次登录服务器时,看到黑乎乎的终端窗口会有点懵,其实查资源占用这件事,逻辑就和打开自己电脑的任务管理器一样,只是命令行的工具更讲究“分寸”,下面按系统类型和场景拆开讲,保证你学会之后能直接上手操作。
怎么查服务器的cpu内存使用情况?先分清你的系统
服务器常见两类操作系统:Linux和Windows,不同系统对应不同的命令和图形工具,但最终拿到手的数据都差不多:CPU使用率、内存总量、已用量、空闲量、以及哪些进程在消耗资源。
Linux服务器查看cpu内存占用率命令
Linux系统下,推荐按“先整体、后进程”的顺序排查,核心命令就三个:top、free、vmstat。
top:实时刷新整个系统的CPU和内存使用概况,同时列出每个进程的资源占用,直接输入top回车,第3行以%Cpu(s)开头,后面跟着us(用户态)、sy(内核态)、id(空闲)等数值;第4行和第5行是内存和交换分区的总量、已用、空闲和缓存。free -h:只看内存时它最舒服。-h表示用人类可读的单位(K、M、G)显示,重点看total、used、available三列,其中available才是真正量“可用”的指标,比free列更有参考价值。vmstat 1:每秒输出一次系统资源快照,关注第一行后面的r(运行队列长度)、us(用户态CPU)、sy(内核态CPU)、wa(等待IO百分比),如果wa长期偏高,说明磁盘读写可能拖慢了整个系统。
Windows服务器怎么查服务器的cpu内存使用情况
Windows Server系统有图形界面,操作路径很直观:
- 任务管理器:按
Ctrl+Shift+Esc打开,在“性能”选项卡里能看到CPU和内存的实时曲线、当前速度、走线图;在“进程”选项卡里点击“CPU”或“内存”列头,可以立刻让占用最高的进程排到最前面。 - 资源监视器:按
Win+R输入resmon回车,比任务管理器更细,它能看到每个进程的CPU时间、内存工作集、硬盘读写速度,还能直接右键结束进程或打开文件路径。 - typeperf命令:如果想在命令行下采集数据,可以用
typeperf "Processor(_Total)% Processor Time" "MemoryAvailable MBytes" -si 5,每5秒输出一次CPU利用率和剩余内存MB数,适合配合脚本做记录。
用top命令实时查看CPU和内存负载(服务器cpu内存使用情况怎么查看)
top是Linux排查资源问题的“瑞士军刀”,很多教程只告诉你“输入top”,但真正要读懂它的输出,还得花点时间。
top命令输出中CPU和内存行怎么看
输入top后,屏幕上半部分全是系统汇总信息:
- 第一行:当前时间、已开机时长、登录用户数、系统平均负载,后面三个数字分别是1分钟、5分钟、15分钟的负载平均值,理想情况下数值应低于CPU核数;如果长期高于核数,说明任务排队严重。
- 第三行
%Cpu(s):us是普通用户进程占用,sy是内核占用,id是空闲比例,wa是等待磁盘IO的比例,例如100 id就表示CPU完全空闲。 - 第四行
KiB Mem:第一个数值是物理内存总量,第二个是已用总量,第三个是空闲量,第四个是缓存和缓冲区用量,注意这个“已用”包含了系统预留给内核的部分,不能简单和free列画等号。 - 第五行
KiB Swap:交换分区的总量、已用和可用,如果swap使用量持续增长,通常意味着物理内存不足。
按内存占用排序找到吃资源进程
top默认按CPU占用率从高到低排序,想看内存占用排行,不需要退出重开,在top界面直接按一下M键,进程列表就会按内存使用量排列,同理,按P键回到按CPU排列,按C键显示完整命令行,按q退出。
如果你不想在交互界面里操作,也可以直接用:
ps aux --sort=-%mem | head -10
这条命令一次性输出内存占用最高的10个进程,每行显示用户、PID、CPU占比、内存占比、命令等,配合管道符和head,非常适合写进自动化脚本里定时检查。
Windows服务器CPU内存占用过高时如何排查(windows服务器cpu内存占用过高排查)
Windows服务器遇到“卡顿”或“程序无响应”时,很多管理员会直接重启服务器,这其实很浪费,用对工具,几分钟就能锁定“元凶”。
任务管理器与资源监视器定位高占用进程
先在任务管理器“进程”页按CPU或内存列排序,找到异常进程后,记下它的PID,接着打开资源监视器,在“CPU”和“内存”页签里找到对应PID,查看它的线程数量和句柄数是否异常增长。
这里有个小技巧:如果看不出来是哪个程序,右键进程选择“打开文件所在位置”,看安装路径是不是正常的软件目录,很多挖矿病毒或木马会伪装成正常服务名,但路径藏在不显眼的
C:WindowsTemp里。
使用性能监视器收集历史数据
任务管理器只能看当下,无法回答“过去两小时内存是不是一直在涨”,这时候用性能监视器(perfmon)更靠谱:
- 按
Win+R输入perfmon回车。 - 展开“监视工具”下的“性能监视器”。
- 点击绿色“+”号,添加计数器:选择
Processor下的% Processor Time,以及Memory下的Available MBytes。 - 在“如果数据超出范围时”设置采样间隔,默认1秒;持续时间可根据需要设置。
- 最后点击“日志数据”收集到
blg或csv文件,之后用Excel打开就能看到趋势线。
如果可用内存曲线持续向下且不回升,多半是某个服务有内存泄漏,你可以用tasklist /m命令查看每个进程加载的DLL模块,或者使用Windows自带的Windows资源管理器(Win+R输入perfmon /res)观察进程提交变化的提交大小。
疑似内存泄漏时的处理思路
当确认某个进程的内存占用只涨不降,先尝试重启该服务,例如IIS应用池,可以在命令行用iisreset重启,如果是自定义开发的.NET应用,建议开启进程转储(dump),用procdump或任务管理器右键“创建转储文件”,再把dump交给开发人员分析,这些操作能帮你避免“一有异常就重启机器”的被动局面。
服务器cpu内存使用情况的查询命令对比
为了让你更直观地选择工具,我把常见的查询方式放在一张表里:
| 工具 | 适用系统 | 核心输出 | 适合场景 |
|---|---|---|---|
top |
Linux | 全部CPU核使用率、物理内存/swap用量、每个进程CPU和内存占比 | 日常实时查看 |
free -h |
Linux | 内存总量、已用、空闲、可用、swap详情 | 快速确认内存容量 |
vmstat 1 |
Linux | 进程队列、中断、上下文切换、IO等待、swap交换 | 定位系统卡顿原因 |
ps aux --sort=-%mem |
Linux | 按内存排序的进程列表 | 写脚本批量排查 |
| 任务管理器 | Windows | CPU曲线、内存曲线、进程CPU/内存排序 | 最直观的图形入口 |
| 资源监视器 | Windows | 每进程CPU时间、工作集、线程数、句柄数 | 深挖单个进程行为 |
typeperf |
Windows | 命令行的CPU和内存计数器值 | 远程脚本采集数据 |
perfmon |
Windows | 可保存到文件的历史计数器日志 | 长时间趋势分析 |
综合来看,Linux下top和vmstat互补性很强;Windows下任务管理器负责“看当下”,perfmon负责“看趋势”,行业共识认为,排查资源问题时先看整体指标(CPU空闲率、可用内存、负载),再下钻到进程级别是最稳妥的顺序。
排查CPU内存高占用时的常见误区
排查过程里,不少经验不足的工程师会被表面数字骗到,下面这几个误区比较典型,建议避开:
- 把CPU使用率当成负载来解读,CPU使用率是“忙碌比例”,负载是“正在运行和等待运行的任务数”,一个8核服务器,CPU使用率只有20%,负载却达到20,说明大量任务在排队,此时加大CPU反而无效,需要查是不是锁竞争或IO瓶颈。
- 把buff/cache当成“已用内存”,Linux内核会尽量利用空闲内存做文件缓存,这部分内存可以在应用需要时立刻释放,很多监控系统把
used列直接抛出,造成“内存满”的误判,正确做法是看available列。 - 只看内存总量不看swap使用,如果swap使用率持续走高,说明物理内存真的不够了,而不是“剩余内存还有很多”,因为Linux在内存不足时会通过swap换出闲置进程页面,影响性能。
关于服务器cpu内存使用情况的几个常见问题
问题1:服务器cpu内存使用情况怎么查看最快?
Linux最快的方法是同时开两个终端,一个执行top,一个执行free -h。top负责看CPU和进程,free -h负责确认内存可用量,Windows下直接用任务管理器“性能”页,然后切到“进程”页按“内存”列排序,整个过程不超过20秒。
问题2:top命令里的%CPU为什么能超过100%?
因为top中进程的%CPU是以单核为基准计算的,如果服务器有8个逻辑核心,一个进程满负荷占满8个核,显示出来就是800%,判断整个系统是否饱和,要看第三行%Cpu(s)中的id空闲值,而不是单个进程数字。
问题3:内存使用率非常高,但系统运行很流畅,这种情况需要加内存吗?
先执行free -h,如果available列显示剩余较多,说明“高内存使用”主要是因为文件缓存,不需要加内存,只有当available长期低于总内存的10%,或者swap开始持续被占用时,才需要考虑增加物理内存,另外要配合业务峰值来判断,比如数据库和Java应用本身就会主动占用大页内存,这类情况属于正常设计。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/719776.html





