Su的技术博客

  • 首页
  • 原创
  • 视频
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
    • AI工具集
    • 工具清单
    • JSON在线格式化
    • JSON在线比较
    • SQL在线格式化
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. Java
  3. 正文
                           

【原创】面试题:系统出现高CPU的原因是什么

2020-01-30 2195点热度 0人点赞 0条评论
面试题:系统出现高CPU的原因是什么
点击上方蓝色字关注我们~

 

最近听说有一道面试题,是关于应用系统出现高CPU的原因,面试者说当时回答的不太好,他只是回答应该是应用出现了死循环,面试官继续追问还有其它什么原因造成高CPU的?面试者一时想不出来,所以就回复暂时想不到其它原因了。所以针对这个问题,回答的应该是挺糟糕的吧。幸好面试官继续追问出现如何排查高CPU,面试者还能比较好的回答如何排查和解决,最后根据自身经验讲出来,总体上还算可以。那么针对这个问题:应用高CPU的原因有哪些呢?

 

1

死循环

 

这个原因是最常见的,也是初学者或经验较少的开发者会遇到比较多的原因。我们比较清楚的知道HashMap在多线程环境下出现线程不安全问题,可能会造成死循环。还有我以前在工作中也有遇到,就是使用定时任务分页拉取数据进行处理的时候,如果在条件查询上没有明确定义好可能会造成一直查询数据,一直没有达到终止条件,就会一直循环拉取数据,一直处理,可能就造成CPU飙高,最后不得不修复bug后再重启应用。

 

2

序列化

 

序列化的方式目前有很多种,包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Protobuff序列化等等。序列化也是一种消耗CPU比较高的方式。也有可能一些序列化方式会出现bug造成的高CPU。

3

加解密

 

在加解密时,会消耗较多的CPU进行处理计算。

4

正则表达式

 

正则表达式在使用的时候也要特别注意,有些情况是会出现高CPU。要注意贪婪模式和回溯问题。

5

计算型

 

如果应用是计算密集型应用,需要消耗很多CPU进行计算,这时也会出现CPU高的情况。

6

大流量

 

在流量比较大的情况,比如秒杀系统,瞬时巨大的流量冲击我们的系统,这个时候也会造成系统的总体负载很高,也是高CPU的罪魁祸首之一。

上面所罗列的6种高CPU的情况,也算是比较常见的。如果出现之后我们就要排查原因,并且解决它。

如果你在面试的时候遇到,如果能说出3~4种,基本上算可以了,但是最好的方式要结合自身所遇到的场景,并且描述情况,然后再把自己如何解决的过程都告诉面试官,也可以看出你经验比较丰富,这样面试就可以事半功倍了。

 

你还遇过哪种造成CPU飙高的原因呢?

推荐阅读

  • 互联网Code Review最佳实践分享

  • dubbo面试题!会这些,说明你看懂了dubbo源码

  • Kafka面试题!掌握它才说明你真正懂Kafka

  • Netty 5.0为啥被舍弃?原因竟然是...

  • 中台之上——业务架构系列【汇总】

  • 必备瑞士军刀IDEA插件,你使用了哪些

  • 加入:互联网基础/架构交流群

面试题:系统出现高CPU的原因是什么

-关注搬运工来架构,与优秀的你一同进步-

本文仅供学习!所有权归属原作者。侵删!文章来源: 搬运工来架构

更多文章:

  1. Eureka源码剖析之七:架构&面试题【总结】
  2. 笔记 | 5种网络IO模型
  3. Kafka如何选择合适的分区数,你选对了吗
  4. RocketMQ 很慢?引出了一个未解之谜
  5. 笔记08 | 搜狗面试题:IO多路复用之select、poll、epoll的区别
  6. Arthas实战-线上热更新代码只需3步
  7. 笔记 | JVM内存区域结构:一计两栈一堆一区
  8. 笔记 | Java对象探秘
  9. Eureka 客户端配置注册地址为什么要加eureka做后缀?
  10. 用了@Autowired注入,竟然被警告
标签: 原创 面试题 线上问题 cpu
最后更新:2023-12-20

Cocodroid

专注Java后端,分享技术。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

广告
文章目录
  • 互联网Code Review最佳实践分享
  • dubbo面试题!会这些,说明你看懂了dubbo源码
  • 中台之上——业务架构系列【汇总】
  • 加入:互联网基础/架构交流群
最新 热点 推荐
最新 热点 推荐
马蜂窝消息总线——面向业务的消息服务设计 基于 MySQL Binlog 实现可配置的异构数据同步 视频笔记:Google发布Agent2Agent协议 视频笔记:什么是微服务,为什么是微服务? 视频笔记:什么是AI 智能体? 视频笔记:什么是Flink? 如何秒级实现接口间“幂等”补偿:一款轻量级仿幂等数据校正处理辅助工具 你可以不用RxJava,但必须得领悟它的思想!
Elasticsearch 使用误区之六——富文本内容写入前不清洗基于 MySQL Binlog 实现可配置的异构数据同步马蜂窝消息总线——面向业务的消息服务设计你可以不用RxJava,但必须得领悟它的思想!如何秒级实现接口间“幂等”补偿:一款轻量级仿幂等数据校正处理辅助工具视频笔记:什么是Flink?视频笔记:什么是AI 智能体?视频笔记:什么是微服务,为什么是微服务?
系统设计 | 业务编号生成 超实用的IDEA插件推荐!百万级下载量 仅使用set属性值就把数据库数据给改了 Eureka源码剖析之四:服务续约 Eureka源码剖析之六:自我保护机制 系统设计 | 术语管理初探讨 理解领域驱动设计DDD 系统设计 | 微服务权限检查点

CRUD (1) Event Sourcing (1) graphql (1) id (1) NoSQL (1) quarkus (1) rest (1) RocketMQ (2) Spring Boot (1) zk (1) zookeeper (1) 上下文 (1) 事务消息 (1) 二级缓存 (1) 值对象 (1) 关系数据库 (1) 分布式缓存 (1) 原子性 (1) 唯一ID (1) 商品 (1) 多对多 (1) 子域 (1) 字符集 (1) 客户端心跳 (1) 幂等 (2) 干货 (1) 并发 (1) 应用场景 (1) 应用架构图 (1) 康威定律 (2) 异步复制 (1) 微服务架构 (2) 总体方案 (1) 技术方案 (2) 技术架构 (2) 技术架构图 (1) 技能 (1) 持续集成 (1) 支撑域 (1) 故障恢复 (1) 数据架构图 (1) 方案选型 (1) 日记 (1) 服务发现 (1) 服务治理 (1) 服务注册 (2) 机房 (1) 核心域 (1) 泄漏 (1) 洋葱架构 (1) 消息队列 (5) 源码剖析 (1) 灰度发布 (1) 熔断 (1) 生态 (1) 画图工具 (1) 研发团队 (1) 线程 (2) 组织架构 (1) 缓存架构 (1) 编码 (1) 视频 (18) 读写分离 (1) 贵州 (1) 软件设计 (1) 迁移 (1) 通用域 (1) 集群化 (1) 雪花算法 (1) 顺序消息 (1)

推荐链接🔗
  • AI工具集
  • 工具箱🛠️

站点已运行 1467 天

COPYRIGHT © 2014-2025 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2

x

通知