查看服务器CPU使用情况,Linux先用top/htop配合uptime看负载和进程,Windows用任务管理器或Get-Counter,云服务器再叠加控制台监控;判断瓶颈不能只看使用率,还要看负载、等待和单核饱和度。
先搞清CPU使用率、负载和等待时间
使用率不是唯一指标
CPU使用率只说明CPU在采样周期里有多忙,不说明任务排了多长的队,行业共识认为,判断CPU瓶颈不能只看使用率,还要结合负载、等待时间和单核饱和度。
- 使用率:用户态
us、内核态sy、IO等待wa、虚拟化偷取st要分开看。 - 负载:Linux看
uptime的1、5、15分钟负载,和逻辑核数对比;负载持续接近或超过逻辑核数,说明任务在排队。 - 等待:
wa偏高常见于磁盘IO慢;st偏高说明宿主机争抢CPU,云服务器上要重点看。 - 单核饱和度:多核机器总使用率不高,但某个进程把单核跑满,业务照样卡。
单核跑满与多核跑满
一台8核服务器总使用率看起来只有5%左右,如果是一个单线程进程占满一核,总使用率就会接近这个数,但业务响应可能已经变慢,看top时按1展开每核,比只看总数更可靠。
| 指标 | 看什么 | Linux常用入口 | Windows常用入口 |
|---|---|---|---|
| 使用率 | CPU忙碌时间占比 | top、mpstat |
任务管理器、Get-Counter |
| 负载 | 可运行和不可中断任务数 | uptime、vmstat |
性能监视器系统队列长度 |
| IO等待 | 等磁盘的时间 | vmstat的wa、iostat |
资源监视器 |
| 虚拟化争抢 | 宿主机偷取的时间 | top的st、vmstat的st |
云监控 |
Linux服务器CPU占用高怎么排查:从整体到进程
一分钟快查:uptime、top、vmstat
先看整体,再钻进程,别一上来就装复杂平台。
uptime:看1、5、15分钟负载,配合nproc看逻辑核数。top:按P按CPU排序,按1看每核,重点看us、sy、wa、st。vmstat 1 5:看r运行队列、us、sy、id、wa、st。mpstat -P ALL 1:看每个核是否被单线程打满。sar -u 1 5:装了sysstat时,用历史数据回看趋势。
定位到进程:pidstat、ps、perf
pidstat -u 1 5:按进程看CPU占用,适合找持续吃CPU的进程。ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -20:快速列前20个高CPU进程。perf top:看内核态热点函数,需要权限,适合排查系统态偏高。cat /proc/stat | head -1:读原始jiffies,适合写脚本采集。
定位到进程后,再看它是不是短时任务、死循环、GC频繁,或者被容器限制,别只看进程名,结合ppid看父进程。
容器和cgroup场景别漏掉
在Docker或Kubernetes里,宿主机top看到的是整机,容器内部看到的不一定完整。
docker stats --no-stream:看容器CPU占用。systemd-cgtop:看cgroup层级CPU消耗。cat /sys/fs/cgroup/cpu.stat:读cgroup CPU统计。kubectl top pod:Kubernetes环境看Pod资源。
据Linux基金会公开文档,cgroup是Linux内核资源隔离的基础机制,容器CPU限制最终会落到cgroup上,排查容器CPU高时,宿主机和容器内要交叉看。
Windows和Linux查看CPU使用率有什么区别:工具与指标对照
Windows任务管理器与性能监视器
Windows服务器上,最快的是任务管理器“性能”页,看CPU利用率、进程、内核时间,更细一点用resmon打开资源监视器,看CPU队列和相关句柄。
要长期采样,用perfmon性能监视器,加计数器:
\Processor(_Total)\% Processor Time\System\Processor Queue Length\Process()\% Processor Time
命令行Get-Counter和typeperf
PowerShell里可以直接采:
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 1 -MaxSamples 5 Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
传统命令行用typeperf:
typeperf "\Processor(_Total)\% Processor Time" -sc 5
据微软官方文档,Get-Counter可读取Windows性能计数器,适合脚本化采集。wmic cpu get loadpercentage在较新系统上已不推荐,优先用Get-Counter或性能监视器。
云服务器CPU使用率怎么查看:控制台与命令行双路径
云服务器要两条路一起走。
- 控制台:看实例监控里的CPU使用率、CPU积分、负载趋势,突发性能实例要留意积分耗尽后的限速。
- 命令行:登录实例用
top、pidstat定位进程,控制台粒度可能是分钟级,短时尖刺容易漏。 - 监控代理:安装云厂商监控Agent,补齐内存、磁盘和进程级数据。
业内专家指出,云服务器控制台的使用率适合看趋势,定位进程还得回到实例内部,业内专家指出仅此一次,控制台和命令行对不上时,先确认采样周期和统计口径。
Linux与Windows命令对照:
| 场景 | Linux | Windows |
|---|---|---|
| 整体使用率 | top、mpstat |
任务管理器、Get-Counter |
| 进程排序 | ps --sort=-%cpu |
Get-Process排序 |
| 负载/队列 | uptime、vmstat |
性能监视器队列长度 |
| 历史趋势 | sar |
性能监视器数据收集器 |
免费服务器CPU监控工具怎么选:先看数据粒度再看告警
轻量场景:htop、Glances、Netdata
临时排查,htop比top顺手,能横向滚动、看进程树。Glances一个界面看CPU、内存、磁盘、网络。Netdata开箱即用,Web看板细,适合单机或小规模。
htop:交互式查看,按F6排序。glances:glances直接启动,远程模式也支持。Netdata:一键脚本安装,默认端口看板,注意安全组只放行内网。
长期趋势:Prometheus+Grafana、Zabbix
要看一周、一月的趋势和告警,单机工具不够。
node_exporter采集Linux指标,Prometheus存储,Grafana出图。- Zabbix适合企业已有告警体系,模板多,配置重一些。
- 云监控基础指标通常免费,先看控制台能不能满足告警。
据Prometheus官方文档,Prometheus按时间序列抓取指标,适合做长期趋势和告警规则,选工具时先看数据保留天数、告警通道、部署成本,别只看界面。
北京服务器CPU监控服务价格差在哪:托管与云上不一样
如果不想自己搭,北京服务器CPU监控服务价格跨度较大,主要看是否包含7×24值守、现场排查、SLA和定制报表,云上实例通常自带基础监控,托管机房则更依赖自建或代维,先把免费方案用透,再判断要不要买服务,比较稳妥。
说到底,查看CPU使用情况不是背命令,而是把使用率、负载、等待和单核饱和度放在一起看,先免费工具定位,再决定要不要上监控平台。
Q&A:服务器CPU使用情况查看常见问题
Q1:top里CPU使用率不高,但服务器很卡,先看什么?
先看负载、wa、st和内存交换,使用率是时间占比,IO等待和内存交换会让任务排队,用vmstat 1 5看r和wa,用free -h看swap,用iostat -x 1看磁盘。
Q2:云服务器CPU使用率看控制台还是命令行?
两个都看,控制台看趋势和计费相关指标,命令行看进程级原因,控制台粒度较粗,短时尖刺可能漏;命令行能定位到进程,把控制台告警和top、pidstat结合使用。
Q3:没有root权限怎么查看服务器CPU使用情况?
先试top -b -n 1和cat /proc/stat,多数系统允许只读;容器里用docker stats或cgroup文件;云服务器直接看控制台监控,需要进程级细节时,让管理员给只读sudo或pidstat权限,只读/proc/stat和云监控控制台不要求root权限。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/796067.html


