1、背景
在服务器上执行某个任务时,系统突然运行缓慢,top 发现cpu飙升,一度接近100%,最终导致服务假死。
2、CPU 使用率怎么计算?
CPU% = 1 - idleTime / sysTime * 100
idleTime:CPU处于空闲状态的时间sysTime:CPU处于用户态和内核台的时间总和3、问题分析
#查看所有进程占系统cpu的排序,极大可能排第一的就是自己的java进程,pid就是进程号。1、top #查看java进程下的所有线程占cpu情况。2、top -Hp 进程id #可查看进程堆栈信息3、jstack 进程号 -F当正常输出的请求不被响应时,强制输出线程堆栈-m如果调用到本地方法的话,可以显示C/C 的堆栈-l除堆栈外,显示关于锁的附加信息,在发生死锁时可以用jstack -l pid来观察锁持有情况#查找某进程下-》线程id(jstack堆栈信息中的nid)=0xa的线程状态4、jstack 进程号 | grep 线程id最后可以把对应堆栈信息导入到log中,进行分析
jstack命令查看对应进程的堆栈信息
3、可能导致的原因
计算密集型的程序是比较耗 CPU 使用率的1、频繁GC,访问量高时,有可能造成频繁的YGC、甚至FGC。当调用量大时,内存分配过快,就会造成GC线程不停的执行,导致CPU飙高2、代码中有大量消耗CPU的操作,导致CPU过高,系统运行缓慢; #例如某些复杂算法,甚至算法BUG,无限循环递归等等 3、由于锁使用不当,导致死锁4、序列化与反序列化,后文中举了一个真实的案例,程序执行xml解析的时,调用量增大的情况下,导致了CPU被打满5、加密、解密6、正则表达式校验,曾经线上发生一次血案,正则校验将CPU打满。大概原因是:Java 正则表达式使用的引擎实现是 NFA 自动机,这种引擎在进行字符匹配会发生回溯(backtracking)7、线程上下文切换、当启动了很多线程,而这些线程都处于不断的阻塞状态(锁等待、IO等待等)和执行状态的变化过程中。当锁竞争激烈时,很容易出现这种情况4、常见的一些问题(来源于其他大佬的总结)
4-1.while的无限循环会导致CPU使用率飙升吗?
是。
首先,无限循环将调用CPU寄存器进行计数,此操作将占用CPU资源。那么,如果线程始终处于无限循环状态,CPU是否会切换线程?
除非操作系统时间片到期,否则无限循环不会放弃占用的CPU资源,并且无限循环将继续向系统请求时间片,直到系统没有空闲时间来执行任何其他操作。
4-2.频繁的Young GC会导致CPU占用率飙升吗?
是。
Young GC本身就是JVM用于垃圾收集的操作,它需要计算内存和调用寄存器。因此,频繁的Young GC必须占用CPU资源。
让我们来看一个现实世界的案例。for循环从数据库中查询数据集合,然后再次封装新的数据集合。如果内存不足以存储,JVM将回收不再使用的数据。因此,如果所需的存储空间很大,您可能会收到CPU使用率警报。
4-3.具有大量线程的应用程序的CPU使用率是否较高?
不是。
如果通过jstack检查系统线程状态时线程总数很大,但处于Runnable和Running状态的线程数不多,则CPU使用率不一定很高。
我遇到过这样一种情况:系统线程的数量是1000 ,其中超过900个线程处于BLOCKED和WAITING状态。该线程占用很少的CPU。
但是大多数情况下,如果线程数很大,那么常见的原因是大量线程处于BLOCKED和WAITING状态。
4-4.对于CPU占用率高的应用程序,线程数是否较大?
不是。
高CPU使用率的关键因素是计算密集型操作。如果一个线程中有大量计算,则CPU使用率也可能很高。这也是数据脚本任务需要在大规模集群上运行的原因。
4-5.处于BLOCKED状态的线程是否会导致CPU占用率飙升?
不会。
CPU使用率的飙升更多是由于上下文切换或过多的可运行状态线程。处于阻塞状态的线程不一定会导致CPU使用率上升。
4-6.如果分时操作系统中CPU的值us或sy值很高,这意味着什么?
可以使用命令查找CPU的值us和sy值top,如以下示例所示:
us:用户空间占用CPU的百分比。简单来说,高我们是由程序引起的。通过分析线程堆栈很容易找到有问题的线程。
sy:内核空间占用CPU的百分比。当sy为高时,如果它是由程序引起的,那么它基本上是由于线程上下文切换。
CPU使用率高是什么原因
相信你也遇到过CPU占用率过高情况吧,这是很多都会遇到的系统问题,这个故障也非常令人头痛。那么,如果出现CPU占用率过高,该如何解决呢?本文为大家带来CPU使用率高是什么原因,仅供参考。
CPU使用率高是什么原因
系统启动、运行程序都得经过CPU处理,CPU使用率高会导致系统运行速度变慢。很多朋友使用电脑久了,就会发现系统运行的速度大不如前,有时甚至长时间的不响应。碰到这个情况,你是不是就断定系统中毒了?可通过杀毒软件查杀后,CPU使用率还是还居高不下,这又是什么原因呢?
占用率长期为100%肯定不正常
1.认识进程 了解进程
Windows XP附带了一个任务管理器,在其中的“进程”选项卡里可以查看当前系统运行的各种进程的具体情况,其中就有CPU使用率。《网友世界》也陆续刊登了相关进程知识 文章 ,不过,有很多读者反应里面的一个名为“System Idle Process”进程为何经常占用很高的CPU资源。其实这是正常现象,“System Idle Process”的中文名是“系统空闲进程”,此进程表示当前系统可用的CPU资源。所以,它的数值越大,可用的CPU资源就越多,反之亦然。
这里顺便提一下,目前有很多软件安装完成后会自主加入系统启动里。对于这样的电脑,系统一启动就跟 死机 一般,花很长时间才能进入桌面。解决的 方法 非常简单,点击“开始”→“运行”,输入“msconfig”打开“系统配置实用程序”,切换到“启动”选项卡,取消列表里不需要的启动项前的复选框。
2.拒绝实时jian控程序
有很多软件都设计了实时jian控模块,比如各种杀毒软件的实时更新/升级病毒库、邮件自动检测程序、系统的计划任务等。对于这些程序和计划任务,建议取消不常用的jian控功能,或者缩短实时jian控的周期。
3.善待“吃”带宽的网络程序
很多读者上网时喜欢用QQ的视频语音功能进行聊天,并且运行下载程序在后台不停地“搬”数据。如果这些程序长时间地使用,机器配置不够强劲的话,很可能就出现CPU使用率“高高在上”的现象。对于这些程序,建议你在任务管理器的“进程”列表里,降低它们的优先级。方法是在“进程”列表里右击某个网络程序,dan出的菜单选择“设置优先级”→“低于标准”(或“低”)。使用下载软件时,也别一味地增加下载任务和线程数;对于BT下载,则可以通过限制连接用户数、上传和下载的速度缓解CPU使用率过高的现象。
4.IE插件也惹祸
使用IE浏览器浏览网页时,是不是经常碰到这些现象:打开某个页面时,浏览器老提示在下载某某插件,可是网页却长时间没反应了。这种现象就是因为IE浏览器里加载了太多插件引起的,具体解决办法可以翻阅上期《菜鸟乐园》的《三板斧砍杀IE“不速之客”》文章。
除了上面列举的现象及分析,还有很多造成CPU使用率高的 其它 情况。比如系统安装了不完善或不兼容的硬件驱动、CPU超频造成的CPU温度过高等。限于篇幅,笔者就在此略过了,其实碰到这方面的问题,关键在于找对原因,那么对症下药就不困难了。
CPU使用率是什么?
CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。
CPU使用率过高是什么原因?
1.电脑运行了大型的程序,例如大型的游戏,3D网络游戏等等,这种情况通常是正常的,这类程序需要较多的CPU资源,网友将大型的程序退出一段时间,CPU使用率基本上就恢复正常了;
2.电脑如果中毒,例如下载者类的病毒,这类病毒会在后台下载大量的恶意程序运行,试想一下,电脑突然运行了几十个程序,CPU使用率必然会突然飙升,用户会觉得很卡。这种情况就需要大家下载杀毒软件或者木马专杀工具进行扫描,清除完病毒、木马之后CPU使用率就会降低了;
3.CPU资源被浏览器占用导致CPU使用率高,现在的浏览器大多是多页面显示方式,这样就会导致浏览器占用过多的内存和CPU资源,网友在发现CPU使用率过高的时候可以检查一下是否是浏览器捣鬼,可以将浏览器退出一段时间看看;
4.电脑软件兼容性不够,有时候网友看视频时会突然卡一段时间,然后电脑就奔溃了,这里有可能是电脑显卡驱动兼容性存在问题,也有可能是视频文件过大,电脑渲染不了,从而出现了CPU使用率过高的问题。 CPU使用率高怎么办?
1.在运行大型程序之前,查看电脑配置是否满足运行该程序的最低配置,如果确实是电脑配置不行的话,那么就建议网友将电脑硬件进行升级了;
2.下载杀毒软件或者木马专杀对电脑进行保护,大家可以使用占用资源小的一些安全工具,例如巨盾,巨盾采用脚本引擎可以极大的释放系统资源,不会使得电脑CPU使用率过高;
3.网友在使用浏览器时尽量选择一些用户群体比较多的浏览器,一些非主流的浏览器就不必使用了,因为小众的浏览器在兼容性,操作性等方面还是有些缺陷的,系统优化也不完善,所以建议大家使用主流的浏览器,避免出现CPU使用率高怎么办的问题;
4.定期更新电脑各种驱动,大家可以使用驱动精灵等工具自动更新电脑上的驱动,保持电脑驱动处于最新状态,减少CPU出现100%的概率。
CPU使用率高的原因及解决
一般情况下CPU占了100%的话我们的电脑总会慢下来,而很多时候我们是可以通过做一点点的改动就可以解决,而不必问那些大虾了。
当机器慢下来的时候,首先我们想到的当然是任务管理器(进入方法:键盘同时Ctrl Alt Del键启动任务管理器)了,看看到底是哪个程序占了较高的比例,如果是某个大程序那还可以原谅,在 关闭该程序后只要CPU正常了那就没问题;如果不是,那你就要看看是什么程序了,当你察不出这个进程是什么的时候就去google或者baidu搜。
一些常用的软件,比如浏览器占用了很高的CPU,那么就要升级该软件或者干脆用别的同类软件代替,有时软件和系统会有点不兼容,当然我们可以试下windows系统下给我们的那个兼容项,右键点该.exe文件选兼容性。
svchost.exe有时是比较头痛的,当你看到你的某个svchost.exe占用很大CPU时你可以检察其对应的程序路径,也就是什么东西在调用这个svchost.exe,如果不是c:\Windows\system32下的,那就可疑。
右击文件导致100%的CPU占用我们也会遇到,有时点右键停顿可能就是这个问题了。官方的解释:先点左键选中,再右键(不是很理解)。非官方:通过在桌面点右键-属性-外观-效果,取消”为菜单和工具提示使用下列过度效果(U)“来解决。还有某些杀毒软件对文件的监控也会有所影响,可以关闭杀毒软件的文件监控;还有就是对网页,插件,邮件的监控也是同样的道理。
一些驱动程序有时也可能出现这样的现象,最好是选择微软认证的或者是官方发布的驱动来装,有时可以适当的升级驱动,不过记得最新的不一定是最好的。有些新发布的驱动并没有经过认证,这就导致大量的测试版的驱动在网上泛滥。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
电脑CPU占用率高的原因及解决方法
我们在使用Windows XP 操作系统 的时候,用着用着系统就变慢了,一看“任务管理器”才发现CPU占用达到100%。这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在本文中笔者将从硬件,软件和病毒三个方面来讲解系统资源占用率为什么会达到100%。
CPU占用率高的九种可能:
1、防杀毒软件造成故障
由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,或者,升级你的硬件配备。
2、驱动没有经过认证,造成CPU资源占用100%
大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。
3、病毒、木马造成
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
4、控制面板—管理工具—服务—RISING REALTIME MONITOR SERVICE点鼠标右键,改为手动。
5、开始->;运行->;msconfig->;启动,关闭不必要的启动项,重启。
6、查看“svchost”进程。
svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。
7、查看网络连接。主要是网卡。
8、查看网络连接
当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太多系统资源。
要解决此问题,我们可以通过修改注册表来解决:在注册表编辑器中依次展开
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserver ]分支,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。然后双击该值,在打开的窗口中键入下列数值并保存退出:
如果计算机有512MB以上的内存,键入“1024”;如果计算机内存小于512 MB,键入“256”。
9、看看是不是Windows XP使用鼠标右键引起CPU占用100%
前不久的报到说在资源管理器里面使用鼠标右键会导致CPU资源100%占用,我们来看看是怎么回事?
征兆,在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题:
任何文件的拷贝操作在那个时间将有可能停止相应;
网络连接速度将显著性的降低;
所有的流输入/输出操作例如使用Windows Media Player听音乐将有可能是音乐失真成因;
当你在资源管理器里面右键点击一个文件或目录的时候,当快捷菜单显示的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平;
解决方法:
方法一:关闭“为菜单和工具提示使用过渡效果”
1、点击“开始”--“控制面板”
2、在“控制面板”里面双击“显示”
3、在“显示”属性里面点击“外观”标签页
4、在“外观”标签页里面点击“效果”
5、在“效果”对话框里面,清除“为菜单和工具提示使用过渡效果”前面的复选框接着点击两次“确定”按钮。
方法二:在使用鼠标右键点击文件或目录的时候先使用鼠标左键选择你的目标文件或目录。然后再使用鼠标右键弹出快捷菜单。