查看服务器的内存和CPU占用率,最直接的方法是登录系统命令行执行 top 和 free -h,如果你是云服务器用户,也可以直接打开云厂商控制台的监控页面,两者都能在几分钟内定位问题。
Linux查看CPU和内存占用率命令有哪些
绝大多数国内服务器运行的是Linux系统,命令行工具是查看占用率最底层、最可靠的途径,不需要安装任何额外软件,系统自带的命令就能完成大部分诊断工作。
top命令:一个界面同时看CPU和内存
top 是运维人员最常用的命令,在终端输入 top 后,屏幕上半部分会显示系统整体状态,下半部分是进程列表,默认按照CPU占用率排序。
- 顶部
%Cpu(s)一行显示用户态、系统态、空闲等CPU时间占比,id表示空闲比例,id长期低于10%,说明CPU压力很大。 KiB Mem一行显示物理内存总量、已用、空闲以及 buff/cache 占用量。- 进程列表中
%CPU和%MEM两列分别表示单个进程的CPU和内存占用率。
如果想把占用率最高的进程排在前面,可以在 top 界面里按大写 P 按CPU排序,按大写 M 按内存排序,操作非常直观,适合应急排查。
free命令:精准查看内存使用明细
top 对内存的展示比较粗略,想搞清楚内存具体去哪了,用 free -h 更合适。-h 参数会自动把字节数转换为人类易读的GB或MB单位。
total是物理内存总量used是已使用的内存buff/cache是缓存和缓冲区占用的内存available才是真正可以分配给新程序的可用内存
很多新手把 used 当成实际占用,忽略了 buff/cache 这部分,实际上Linux会尽量利用空闲内存做文件缓存,在内存紧张时系统会自动释放这些缓存,所以判断内存是否不够用,应该重点看 available 这一列。
vmstat与sar:连续追踪占用率趋势
单次 top 只能看到一瞬间的状态,服务器CPU占用率时高时低,需要连续观察。vmstat 1 5 可以每隔1秒输出一次数据,一共输出5次,把连续的数据串起来看,就能判断占用率是稳定还是突刺。
vmstat 输出里,us 和 sy 列分别代表用户态和系统态CPU占用,wa
列代表I/O等待时间。wa 数值较高,说明磁盘读写慢拖累了CPU,问题可能出在存储而不是CPU本身。
想查看历史趋势,可以使用 sar 命令。sar 需要提前安装sysstat工具包,启动后会在后台定时采集数据,查看CPU历史占用用 sar -u,查看内存历史占用用 sar -r,这类数据对判断服务器是否在某个时段出现规律性高峰非常有价值。
pidstat与ps:定位是哪个程序在吃资源
占用率整体偏高时,必须找到具体进程。ps aux --sort=-%cpu 可以一次性列出所有进程,并按照CPU占用率从高到低排列,再配合 ps aux --sort=-%mem 可以看内存占用排序。
pidstat 1 也是好用的小工具,它会每隔1秒输出各个进程的CPU和内存占用变化,特别适合定位临时飙高的进程,找到PID之后,用 ls -l /proc/PID 还能查看这个进程的完整启动路径。
云服务器CPU和内存占用率怎么查?控制台与面板方案
如果你是云服务器用户,不一定非要登录命令行,国内主流云厂商的控制台都提供了免安装的监控服务,适合不想碰命令行的用户。
简米云、酷番云控制台监控怎么看
以简米云为例,登录ECS控制台后,在实例列表中找到目标服务器,点击实例ID进入详情页,默认展示的就是性能监控图表,CPU使用率、内存使用率、网络带宽等指标一目了然,酷番云服务器则是在轻量应用服务器或云服务器CVM的监控选项卡里查看,路径类似。
控制台监控的优势是免登录、不占服务器资源,而且支持设置报警规则,当CPU或内存占用率连续几分钟超过阈值,系统会通过短信或邮件提醒你,对于临时不在电脑前的情况,这个功能比命令行更实用。
宝塔面板:适合站长和中小团队的可视化方案
不少个人站长使用宝塔面板管理服务器,面板首页会直接显示CPU、内存、磁盘的实时占用率,点击图表还能查看过去24小时甚至一周的趋势,对不熟悉Linux命令的用户来说,宝塔把命令行的复杂操作转化成了图形界面,安装监控插件后还能按进程查看具体是哪个程序占用高。
Windows服务器怎么查占用率
Windows云服务器和实体机的查看方法略有不同,最基础的是打开任务管理器,在“性能”选项卡里可以看到CPU和内存的实时使用率;在“进程”选项卡里单击“CPU”或“内存”列头,可以直接排序,更精细的数据需要打开资源监视器,输入perfmon
也可以启动性能监视器,添加计数器后能长期记录CPU和内存的占用变化。
看到占用率之后,怎么判断服务器是否需要升级?
查看占用率只是第一步,真正的难点在于判断这个占用率是否危险,行业共识认为,CPU和内存的合理水位需要结合业务场景判断,并不存在一个绝对固定的安全阈值。
CPU占用率高:先优化再扩容
业内专家指出,CPU长期跑满并不一定代表硬件不够用,很多情况下是应用层代码问题导致的,例如PHP-FPM进程数配置过多、数据库查询没有走索引、定时任务集中执行,这些都会让CPU徒劳空转。
处理思路是:先用 top 定位到吃CPU的进程,再检查该进程对应的业务逻辑,确认没有明显优化空间后,再考虑升级CPU核数,直接加钱扩容可能短时间见效,但掩盖了真实问题,之后仍然会复发。
内存占用率高:Swap是重要信号
看内存占用率不能只看百分比,还要关注Swap交换分区的使用情况,Linux系统在内存耗尽时会使用Swap,把内存中的数据临时换到磁盘上,如果Swap使用量持续增长,说明物理内存已经严重不足,表现为服务器响应变慢、负载升高。
这时先用 free -h 确认Swap使用了多少,再用 top 按内存排序找出占用大户,如果是Java应用,可能需要调整JVM堆内存参数;如果是数据库,要考虑调整缓存大小,优化后仍然不够,再购买内存配置更高的实例。
结合业务场景做决策
一个只有访问量的个人博客,CPU占用率在高峰时到80%可以接受;一台承载线上交易的数据库服务器,CPU超过60%就应该重点关注,同样是一台2核4G的服务器,跑Nginx静态页面和跑微服务应用,对应的安全水位完全不同,比较稳妥的做法是连续观察一周的监控数据,看平均负载和峰值持续时间,再决定是否升级配置。
服务器CPU占用率高怎么排查?从这三个层面入手
很多用户遇到CPU跑满时容易慌乱,其实排查路径相当固定,按部就班走完,基本都能找到问题源头。
按进程拆解,别被总占用率误导
在 top 输出里,CPU总和可能显示100%,但这是所有进程叠加的结果,需要逐个检查是单个进程吃掉了80%以上,还是多个小进程平均占用,如果是单个进程异常,大概率是代码死循环或程序Bug;如果是多个进程加起来很高,可能是配置的并发数过大,或者遭遇了流量攻击。
Load Average和CPU占用率不是一回事
服务器负载除了看CPU占用率,还要看 uptime 命令输出的load average,这一串三个数字分别代表1分钟、5分钟、15分钟的平均负载,Load Average并不是简单的CPU百分比,而是运行队列中等待调度的任务数量,在一台4核服务器上,load average长期高于4,说明CPU已经满负荷运转;但CPU占用率可能只有75%,因为进程在等待I/O操作也会让负载升高。
排查常见坑:内存占用高不一定是不够用
前面提到Linux的 buff/cache 占用了大量内存,在 top 里显示内存用了90%以上,但系统运行依然流畅,这种情况通常不需要处理,判断标准很简单:看 available 数值,只要它始终大于日常业务需求,就不算内存不足,只有当Swap使用量持续上涨,或者 available 降到总内存的10%以下时,才考虑优化或加内存。
常见问题:服务器CPU和内存占用率查看与判断
服务器CPU占用率100%时,最快定位方法是什么?
最快的方法是在命令行执行 top -c,这样会显示每个进程的完整命令行,CPU占用率最高的进程会出现在最顶部,拿到进程ID后,再执行 ps -p PID -o pid,ppid,user,cmd 查看该进程的启动命令,结合业务日志判断是正常业务高峰期还是异常进程,如果是可疑程序,不要直接kill,先查清楚它关联的脚本或服务,避免误伤正常应用。
云服务器内存占用率多少算正常?
云服务器内存占用率是否正常,主要看是否引发Swap交换,如果Swap一直为零,说明物理内存足够,即使占用率显示80%也属于正常范围,如果Swap开始增长,而且可用内存长期低于总内存的10%,就说明内存吃紧,不同业务差别很大,数据库服务器和Web服务器相比,数据库服务器通常需要更高的内存水位。
查看服务器内存和CPU占用率必须安装监控软件吗?
不必须,Linux系统自带的 top、free、ps 命令完全能满足临时查看需求,Windows系统自带的任务管理器也可以,监控软件主要解决两个问题:一是自动记录历史数据,二是实时报警提醒,如果你需要长期追踪趋势,或者在深夜出现问题也能收到通知,再安装宝塔、Zabbix或云厂商自带的监控插件,如果只是偶尔查看一次,没必要为此额外安装工具。
结论很简单:命令行适合快速应急,控制台监控适合看长期趋势,两者结合使用,才能准确判断服务器是临时波动还是真正需要升级配置。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/735353.html




