服务器内存和cpu使用情况怎么看:先分清“病”在哪儿
看服务器内存和CPU使用情况,本质上就是回答三个问题:谁在用、用了多少、该不该清。 最直接的方法是登录服务器执行 top 或 free -h 命令,Windows系统则打开任务管理器或资源监视器,但光看数字没用,你得能读懂这些数字背后的“潜台词”是正常波动还是性能瓶颈,是偶发尖刺还是持续满载。
服务器cpu内存占用过高怎么排查:先看总量,再看进程
第一步:用 top 命令快速锁定“元凶”
top 是Linux系统里最经典、最直观的性能查看工具,登录服务器后输入 top,回车,你会看到一张动态刷新的进程列表,上半部分是系统概况,下半部分是进程明细。
看CPU时重点关注 %Cpu(s) 这一行,它分成了 us(用户态)、sy(系统态)、id(空闲)、wa(等待I/O)等几列。id 低于20%说明CPU很紧张,wa 偏高说明磁盘或网络I/O拖了后腿,这时候盲目加CPU核心数没用。
看内存时重点关注 KiB Mem 这一行,它展示了总内存、已用、空闲和缓冲缓存,这里有个常见误区:free 命令显示的 available 才是真正可用的内存,它包含了可回收的缓存。available 持续走低,而 top 里某个进程的 RES(常驻内存)数值异常高,那基本就是它“吃”了太多内存。
第二步:用 free -h 和 vmstat 看内存水位线
free -h 是查看内存最简洁的命令,以人类可读的格式显示总量、已用、空闲、共享、缓冲和可用内存,执行后如果发现 available 长期低于总内存的10%,说明内存压力很大,随时可能触发OOM(内存溢出)机制,系统会自动杀掉进程来保命。
再配合 vmstat 1 5 命令,每1秒采样一次,共5次,重点关注 si(swap in)和
so(swap out)两列,如果数值经常不是0,说明物理内存不够用,系统正在频繁读写交换分区,这时候服务器的性能会明显下降,比CPU满载还难受。
第三步:Windows服务器怎么查?
Windows系统不用敲命令,右键点击任务栏空白处,选择“任务管理器”,切到“性能”标签页就能看到CPU使用率、内存占用和磁盘活动,但任务管理器信息太粗,想看具体是哪个进程占用的资源,切到“进程”标签页,点击“CPU”或“内存”列头排序即可。
想看更细致的线程级数据,打开“资源监视器”按 Win+R 输入 resmon 回车,切到“CPU”标签页,能看到每个进程下每个线程的CPU占用,这里还能看到“平均CPU”和“最大CPU”两个数,平均低但最大很高,说明是间歇性突发负载。
服务器内存不足怎么解决:分清“真缺”还是“浪费”
数据库或Java应用占满内存
这类进程的特点是内存占用稳步爬升,重启后回落,过段时间又涨回来,业内专家指出,这类应用最常见的问题是堆内存配置不合理,比如JVM启动参数里的 -Xmx(最大堆内存)设得太大,或者连接池、缓存配置没有上限。
解决办法:调整应用参数,限制堆内存上限,给操作系统留出20%-30%的余量,如果调整后内存还是涨,就得查代码里有没有内存泄漏对象创建了没有释放,或者缓存没有淘汰机制。
缓存类服务(Redis、Memcached)占内存
这类服务的设计初衷就是尽量用内存换速度,所以它们占满内存是“正常行为”,不代表服务器不行了。看它们的命中率比看内存占用更有意义,如果命中率高,说明内存用得值;如果命中率低,反而应该调小缓存容量,把内存让给其他业务。
日志文件或临时文件撑爆磁盘,间接导致内存异常
很多人会忽略这个关联:磁盘满了,日志写不进去,程序报错后不断重试,每次重试都产生新对象,内存就跟着涨,所以排查内存问题时,
顺手执行 df -h 看下磁盘空间,能少走不少弯路。
linux查看cpu内存命令有哪些:日常巡检用这三板斧
top:动态查看CPU和内存实时状态,适合定位当前热点。free -h:只看内存概览,适合快速判断水位。ps aux --sort=-%cpu | head -10:按CPU占用率倒序排列进程,找出“最活跃”的前10个进程。
想按内存排序,把 -%cpu 换成 -%mem 即可,这条命令在排查“服务器cpu内存占用过高怎么排查”时比 top 更直观,因为它直接给出了静态排名,不会被动态刷新干扰。
进阶:用 pidstat 和 sar 看历史趋势
top 只能看当下,想证明“某个进程每天下午3点CPU飙升”,得靠历史数据。pidstat -p 进程号 1 10 可以持续监控指定进程的CPU和内存变化。sar -r 和 sar -u 则能调出系统历史的内存和CPU使用记录前提是 sysstat 工具包已安装且定时任务在跑。
行业共识认为,性能排查最忌讳“凭感觉”,先看历史趋势确定异常发生的时间点,再在那个时间点附近找关联事件(比如定时任务、用户访问高峰),最后再定位到具体进程,这个顺序最省力。
服务器性能监控的正确打开方式:别等卡了才想起来看
用监控工具代替手动敲命令
手动登录服务器查状态,只能看到“当下”的快照,业务低谷期看什么都正常,业务高峰期可能连登录都卡。搭一套监控系统才能看清全貌。
- 轻量方案:
nmon+ 定时采集脚本,把数据写到文件里,事后用Excel分析。 - 专业方案:Prometheus + Grafana,能画曲线图、设告警阈值,邮件或钉钉通知。
- 云厂商方案:简米云、酷番云的控制台自带监控图表,还能配“自动扩容”策略。
给监控设“告警阈值”比盯着图表更有用
CPU使用率持续10分钟超过85%、内存可用量低于总内存的15%、swap使用率超过50%这三个阈值是行业里比较常见的告警标准。
不建议把阈值设得太灵敏,比如CPU一超过50%就告警,结果一天收几百条通知,真正出问题的那条反而被淹没了。
日常巡检看“水位”,故障排查看“变化率”
日常巡检时,看绝对值:CPU是否接近满载、内存是否快用完,但故障排查时,看变化率:CPU从20%跳到80%用了多久,内存以什么速度在涨,一个匀速上涨的内存曲线,比一个突然跳高的CPU尖刺更容易引发严重后果前者大概率是泄漏,后者可能是正常的流量高峰。
Q&A:关于服务器性能查看的常见疑问
服务器CPU使用率100%会不会烧坏硬件?
不会,CPU有自我保护机制,长时间100%负载只会让温度升高,风扇转速加快,性能略微下降,不会直接损坏硬件,真正该担心的是持续100%导致的业务响应变慢,以及温度过高触发的自动降频或关机保护。
为什么free命令显示内存还有很多,但系统却说内存不足?
free -h 输出里有个 available 字段,这才是应用程序实际可用的内存,它包含了可回收的页缓存,如果你只看 free 列的数值,会觉得内存还够用,但系统判断内存不足是看 available。cgroup 限制、容器内存配额也会导致“明明系统内存没满,但进程就是申请不到内存”的情况,排查时记得看一眼容器或cgroup的限制。
云服务器和物理服务器的性能查看方法有区别吗?
底层命令和工具完全一样,但云服务器多了两层特殊性:一是宿主机争抢,邻居实例占用大量CPU或I/O资源会影响你的性能,这在云控制台里可能看不到,得用压测工具实测;二是云服务器的磁盘I/O性能上限通常是固定的,CPU和内存看起来都正常,但业务就是慢,很可能卡在磁盘吞吐上,排查顺序建议先看CPU和内存,再看磁盘I/O,最后看网络带宽,云服务器用户尤其要注意后两项。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/604043.html




