原子网络科技 原子网络科技

服务器CPU占用率过高时,如何找到占用资源最多的进程以及进行资源优化

a169kai 2026年11月03日 · 阅读约 2 分钟

CPU 占用率上升只是表面现象,第一步要做的就是分辨出计算密集、等待堆积以及调度异常这三种原因。负载平均值大于核数不一定就是 CPU 饱和,还要看 us、sy、wa 三项的比例。

进程级排查从排序开始。top、htop按照CPU使用率排序可以快速找到头部进程,ps aux –sort=-%cpu适合脚本化采集,多次采样可以避免瞬时峰值误判。pidstat按进程和线程维度输出周期数据,可以判断出占用是持续型还是脉冲型。线程编号所对应的调用栈进一步指向具体的逻辑,Java服务可以使用jstack连续抓取,对比线程状态的变化。

系统层指标决定了优化的方向。sy 高表示系统调用或者上下文切换过多,检查 cs 和中断分布;wa 高表示瓶颈在磁盘或者网络等待,此时压满 CPU 的进程只是受害者。mpstat -P ALL 查看各个核的负载情况,单核满载一般是因为锁竞争或者单线程任务,多核均衡偏高则接近容量不足。

定位到进程之后按照性质进行处理。批处理、日志切割、索引重建等任务安排在低峰期进行,使用nice或者cgroup来限制CPU的使用量,防止和在线业务发生冲突。常驻服务要关注连接数以及线程池的配置情况,池太小会造成排队,池太大则会产生切换开销。慢查询、正则回溯、密集序列化属于代码层面的问题,在实现的时候要进行优化。

容量不够的时候扩容和限流同时进行。先加缓存、读写分离来减少无效计算,再根据峰值水位预留一定的余量。监控侧给CPU设置分位阈值进行告警,在出现异常的时候截取进程快照,方便事后分析,而不是仅仅依靠实时观察。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票