关键指标需看趋势、比例和上下文:cpu要拆解%us/%sy/%wa/%id并结合load average;内存认准available而非free,关注swap si/so及jvm老年代增长;多信号叠加(如%us高+load高+r>核数)才预警真实瓶颈。

直接看关键指标,不靠感觉——CPU 和内存监控不是“有没有在跑”,而是“跑得健康不健康”。重点不在数值高低,而在趋势、比例和上下文。
CPU 负载:别只盯 %us,要拆开看
单看 top 里“95% CPU 使用率”容易误判。真正要关注的是这四类占比:
- 用户态(%us):应用代码消耗的 CPU。持续 >70%,说明业务逻辑或脚本有优化空间(比如未索引查询、死循环、低效正则)
- 内核态(%sy):系统调用、中断、软中断占用。>20% 且稳定偏高,可能是驱动异常、网络包处理过载或频繁锁竞争
- I/O 等待(%wa):CPU 在等磁盘或网络响应。>15% 持续存在,说明瓶颈不在 CPU,而在存储或网卡(比如慢盘、RAID 同步卡顿)
- 空闲(%id):压测时接近 0 是正常的;但若业务高峰期 %id 还很高(如 >60%),反而提示资源闲置,可能配置冗余或流量未打满
另外必须结合 负载均值(load average):用 uptime 或 top 第一行查看。4 核机器,1 分钟 load 若长期 >8,说明任务排队严重,哪怕 %us 只有 60%,CPU 已经过载。
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
内存使用:认准 “available”,不是 “free”
Linux 的内存管理很聪明,会把空闲内存自动用于 pagecache/buffer 加速 I/O。所以 free -h 里的 “free” 值低 ≠ 内存紧张,“available” 才是真实可用量。
- 若 available 持续低于总内存的 10%(比如 64G 机器只剩不到 6G),就要警惕内存泄漏或配置超限
- swap 使用不是零才安全:swapon --show 查看交换分区状态;vmstat 1 中 si/so 列出现非零值(尤其 so 持续 >0),说明物理内存已不够,系统开始写盘换页,性能会断崖下跌
- JVM 应用要额外盯 堆内存增长趋势:用 jstat -gc
看老年代是否缓慢上涨、GC 频次是否增加——这是典型的内存泄漏前兆
实操建议:用对工具,抓准节奏
临时排查用交互式命令,长期监控必须结构化采集:
- 快速定位进程:
top -p <pid></pid>或htop(按 F6 排序),mpstat -P ALL 1查每核负载是否不均 - 捕获瞬时尖峰:
vmstat 0.5(半秒采样),避免 top 默认 3s 刷新漏掉 200ms 级 spike - 生产环境别依赖 top:它输出不可解析、无法告警。改用
sar -u 1 5(CPU)或sar -r 1 5(内存),结果可直接进日志管道或触发阈值判断 - 加一层验证:
pidstat -r -u 1同时看进程级 CPU 和内存 RSS,能发现“CPU 不高但内存疯涨”的典型泄漏场景
什么时候算出问题?看组合信号
单一指标异常未必致命,但多个信号叠加就是明确预警:
- CPU %us 高 + load 高 + r 列(vmstat)持续 > CPU 核数 → 计算密集型瓶颈
- %wa 高 + si/so 上升 + iostat %util 接近 100% → 存储 I/O 瓶颈
- available 下降 + swap so 上升 + JVM old-gen 持续增长 → 内存泄漏,服务即将 OOM










