Su的技术博客

  • 首页
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • Other
  • 工具
  • 打赏
  • 关于
  1. 首页
  2. Java
  3. 正文
                           

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

2020-01-30 29点热度 0人点赞 0条评论
点击上方蓝色字关注我们~


最近听说有一道面试题,是关于应用系统出现高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插件,你使用了哪些

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


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

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

标签: 原创
最后更新:2020-01-30

Cocodroid

专注Java后端,分享技术。

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

文章评论

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

最新 热点 推荐
最新 热点 推荐
殷浩详解DDD 第四讲:领域层设计规范 既生@Resource,何生@Autowired? Go整洁架构实践 接口优化的常见方案实战总结 QQ音乐高可用架构体系 构建一个布隆过滤器 —— Building a Bloom filter
殷浩详解DDD 第四讲:领域层设计规范Redis为什么这么快?构建一个布隆过滤器 —— Building a Bloom filterQQ音乐高可用架构体系接口优化的常见方案实战总结Go整洁架构实践
2000 字教你画项目架构图(建议收藏) 笔记 | 网络编程基础:TCP如何保证可靠性 笔记 | JVM内存区域结构:一计两栈一堆一区 【视频】NettyInAction作者:统治一切的框架Netty- One Framework to rule them all MySQL性能优化浅析及线上案例讲解 用了@Autowired注入,竟然被警告

@Autowired (1) @Resource (1) API网关 (1) ddd (6) DP (1) ElasticSearch (1) eureka (7) go (1) HTTP (1) IDEA (1) iOS (1) Java (8) JSR (1) QQ音乐 (1) repository (1) Spring (1) SQL优化 (1) 代理 (1) 依赖注入 (1) 同城双活 (1) 垃圾回收 (1) 定时任务 (1) 容灾 (1) 布隆过滤器 (1) 异地双活 (1) 接口优化 (1) 故障转移 (1) 数据库 (2) 整洁架构 (1) 文件网关 (1) 方案 (2) 服务续约 (1) 注册中心 (7) 流水账 (1) 流量 (1) 第五 (1) 线上案例 (1) 线上问题 (2) 缓存 (1) 缓存击穿 (1) 编译 (3) 网络 (3) 聊聊 (1) 订单 (1) 设计规范 (1) 详解 (1) 连接池 (1) 限流 (1) 领域驱动设计 (4) 高可用 (1)

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

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2