新闻资讯
系统出现高CPU的原因是什么
死循环
这个原因是最常见的,也是初学者或经验较少的开发者会遇到比较多的原因。我们比较清楚的知道HashMap在多线程环境下出现线程不安全问题,可能会造成死循环。还有我以前在工作中也有遇到,就是使用定时任务分页拉取数据进行处理的时候,如果在条件查询上没有明确定义好可能会造成一直查询数据,一直没有达到终止条件,就会一直循环拉取数据,一直处理,可能就造成CPU飙高,最后不得不修复bug后再重启应用。
2
序列化
序列化的方式目前有很多种,包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Protobuff序列化等等。序列化也是一种消耗CPU比较高的方式。也有可能一些序列化方式会出现bug造成的高CPU。
3
加解密
在加解密时,会消耗较多的CPU进行处理计算。
4
正则表达式
正则表达式在使用的时候也要特别注意,有些情况是会出现高CPU。要注意贪婪模式和回溯问题。
5
计算型
如果应用是计算密集型应用,需要消耗很多CPU进行计算,这时也会出现CPU高的情况。
6
大流量在流量比较大的情况,比如秒杀系统,瞬时巨大的流量冲击我们的系统,这个时候也会造成系统的总体负载很高,也是高CPU的罪魁祸首之一。
回复列表