常见性能问题-CPU占用高
2021/7/23 6:08:45
本文主要是介绍常见性能问题-CPU占用高,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
CPU占用率高可能是什么原因?
1、先分析系统类型,一般计算密集型系统就会比IO密集型系统cpu占用率高,因为计算密集型系统工作重心在计算和逻辑判断,例如大数据,他们的cup达到满负荷可能都算正常;我们接触的大部分应用都是IO密集型系统,典型应用就是数据库,再例如天猫,百度,京东,他们大部分时间在磁盘进行读和写,cup等待磁盘返回数据的过程中不分配时间片,所以CPU使用率不是特别高; 2、请求压力过大,负载高,jvm堆就要不断进行垃圾回收,young gc 和 full gc都是占用CPU内存的,所以CPU占用率越来越高,几乎100%; 3、看是usr占用cpu高还是system占用cpu高,系统占用cpu高多数是调用系统内核导致的,比如写log,如果它是由程序引起的,那么它基本上是由于线程上下文切换; 4、死循环,无限循环将调用CPU寄存器进行计数,此操作将占用CPU资源。除非操作系统时间片到期,否则无限循环不会放弃占用的CPU资源,并且无限循环将继续向系统请求时间片,直到系统没有空闲时间来执行任何其他操作。 5、多线程与cpu的关系 具有大量线程的应用程序的CPU使用率是否较高?不是。 如果通过jstack检查系统线程状态时线程总数很大,但处于Runnable和Running状态的线程数不多,则CPU使用率不一定很高。 于CPU占用率高的应用程序,线程数是否较大?不是。 高CPU使用率的关键因素是计算密集型操作。如果一个线程中有大量计算,则CPU使用率也可能很高。这也是数据脚本任务需要在大规模集群上运行的原因。 处于BLOCKED状态的线程是否会导致CPU占用率飙升?不会。 CPU使用率的飙升更多是由于上下文切换或过多的可运行状态线程。处于阻塞状态的线程不一定会导致CPU使用率上升。
这篇关于常见性能问题-CPU占用高的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20获取apk的md5值有哪些方法?-icode9专业技术文章分享
- 2024-11-20xml报文没有传 IdentCode ,为什么正常解析没报错呢?-icode9专业技术文章分享
- 2024-11-20如何知道代码有没有进行 Schema 验证?-icode9专业技术文章分享
- 2024-11-20Mycat教程:新手快速入门指南
- 2024-11-20WebSocket入门:轻松掌握WebSocket基础
- 2024-11-19WebSocket入门指南:轻松搭建实时通信应用
- 2024-11-19Nacos安装资料详解:新手入门教程
- 2024-11-19Nacos安装资料:新手入门教程
- 2024-11-19升级 Gerrit 时有哪些注意事项?-icode9专业技术文章分享
- 2024-11-19pnpm是什么?-icode9专业技术文章分享