ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

常见性能问题-CPU占用高

2021-07-23 01:01:29  阅读:222  来源: 互联网

标签:占用 常见 cpu 线程 使用率 占用率 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,线程,使用率,占用率,CPU
来源: https://www.cnblogs.com/licuicui/p/15047106.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有