首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CPU100%排查分析指南

CPU100%排查分析指南

作者头像
oktokeep
发布2024-12-06 08:36:27
发布2024-12-06 08:36:27
5810
举报
文章被收录于专栏:第三方工具第三方工具

CPU100%排查分析指南

1 一次性获取的数据太多 随着系统上线时间的推移,线上的数据越来越多,系统出现了bug,我们每次获取到的都是全量的数据,并非增量的数据。 其根本原因是频繁的full gc

2 kafka自动确认 随着业务的发展,用户量越来越多,每天产生的kafka消息也越来越多。 后来,我们把kafka的consumer,消费消息后改成手动确认,cpu使用率100%的问题就被解决了。

3 死循环 死循环有两种: 在while、for、forEach循环中的死循环。 无限递归。 这两种情况,程序会不停的运行,使用寄存器保存循环次数或者递归深度,一直占用cpu,导致cpu使用率飙升。

4 多线程导数据 多线程导入数据,如果线程数量比较多,会存在大量线程上下文切换的过程,这个过程非常消耗CPU资源。

5 同步大量文件 由于涉及到了大量文件的同步,导致存放文件的那台应用服务器CPU飙升的很高。

6 死锁 为了防止并发场景中,多个线程修改公共资源,导致的数据异常问题。 很多时候我们会在代码中使用synchronized或者Lock加锁。 比如线程a拥有锁c,需要获取锁d,才能完成业务逻辑。 而刚好此时线程b拥有锁d,需要获取锁c,也能完成业务逻辑。 线程a等待线程b释放锁,而线程b等待线程a释放锁,两个线程都持有对方需要的锁,无法主动释放,就会出现死锁问题。 死锁会导致CPU使用率飙升。

7 正则匹配 其实这里导致 CPU 使用率高的关键原因就是:Java 正则表达式使用的引擎实现是NFA自动机,这种正则表达式引擎在进行字符匹配时会发生回溯。

8 耗时计算 因为实时计算需要消耗cpu资源,如果一直计算,就会一直消耗cpu资源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档