问题分析:
一般cpu占用效高都是排序、sql解析和全表扫描,这里首先需要找出占用cpu最高的sql,然后查看他的执行计划,比如:看执行计划是走索引还是全表扫描(刚开始查看top发现占用同样多的CPU的进程很多,还以为是oracle 的bug, 后来发现不是)。
处理过程:
1, 根据 *** 作系统进程查找Oracle数据库中占用最多CPU的SQL
使用Linux系统 "top命令->P "查出占用cpu最高的进程PID
*** 作如下:在sqlplus中执行如下sql:
SQL>
SELECT
sql_text
FROM v$sqltext a
WHERE (ahash_value, aaddress) IN
(SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE bpaddr =
(SELECT addr FROM v$process c WHERE cspid = '&pid'))
ORDER BY piece ASC
其中&pid 是使用top 查看系统中进程占用CPU极高的PID
找到SQL语句进行相应的调整优化
2,分析找到的sql语句,如查看sql执行计划。
load average 就是 CPU 的 Load
它表示 CPU 使用队列的长度 这个数字越小越好
这里有一个误区 那就是 CPU 利用率高 并不意味着负载就一定大!
1打开SQL Server Profiler
2新建跟踪 a点击新建跟踪,并设置好数据库连接 b设置跟踪属性,选择模板“Standard” c切到“事件选择”进行跟踪设置 1) 只保留如下两个事件选项 2) 点
3点击运行,跟踪语句,定位CPU占用较多的语句 CPU占用2660146毫秒,
4根据语句特征,在你的服务器程序中找到相应的功能,作出修正 41) 分析查询中需
一个死循环,让我的sql数据库的cpu一下到了100%,我不得不花了一些时间,将这个死循环找出来了。。。
[@more@]
1、从微软站点上下载qslice_setupexe
2、打开Query Analyzer,运行以下语句:
declare @a int
while (1<2)
begin
select @a=1
end
将会发现cpu马上达到100%
3、打开qliceexe,将发现sqlserverexe的cpu占用率很高,双击进入,出行sqlserverexe中具体线程的执行情况
4、活动运行cpu高的那个id,为16进制的,先将他转换为10进制
5、将这个10进制数,作为参数运行以下查询:
select spid from sysprocesses where kpid=1756
6、将这个spid运行的sql导出:
DBCC TRACEON(3604)
DBCC INPUTBUFF(57)
7、杀掉这个spid
kill 57
over
CPU占用100%解决办法:
一般情况下cpu占了100%的话我们的电脑总会慢下来,而很多时候我们是可以通过做一点点的改动就可以解决,而不必问那些大虾了。
最大可能病毒攻击成功的病症,会占用大量系统资源,使CPU占用率达到100%,电脑运行异常缓慢,会提示内存不足。建议进入安全模式下,设法清除已经潜藏在你的机器上的木马、病毒。
当机器慢下来的时候,首先我们想到的当然是任务管理器了,看看到底是哪个程序占了较搞的比例,如果是某个大程序那还可以原谅,在关闭该程序后只要cpu正常了那就没问题;如果不是,那你就要看看是什么程序了,当你查不出这个进程是什么的时候就去google或者baidu搜。有时只结束是没用的,在xp下我们可以结合msconfig里的启动项,把一些不用的项给关掉。在2000下可以去下个winpatrol来用。
一些常用的软件,比如浏览器占用了很搞的cpu,那么就要升级该软件或者干脆用别的同类软件代替,有时软件和系统会有点不兼容,当然我们可以试下xp系统下给我们的那个兼容项,右键点该exe文件选兼容性。
svchostexe有时是比较头痛的,当你看到你的某个svchostexe占用很大cpu时你可以去下个aports或者fport来检查其对应的程序路径,也就是什么东西在掉用这个svchostexe,如果不是c:\windows\system32(xp)或c:\winnt\system32(2000)下的,那就可疑。升级杀毒软件杀毒吧。
右击文件导致100%的cpu占用我们也会遇到,有时点右键停顿可能就是这个问题了。官方的解释:先点左键选中,再右键(不是很理解)。非官方:通过在桌面点右键-属性-外观-效果,取消”为菜单和工具提示使用下列过度效果(U)“来解决。还有某些杀毒软件对文件的监控也会有所影响,可以关闭杀毒软件的文件监控;还有就是对网页,插件,邮件的监控也是同样的道理。
一些驱动程序有时也可能出现这样的现象,最好是选择微软认证的或者是官方发布的驱动来装,有时可以适当的升级驱动,不过记得最新的不是最好的。
cpu降温软件,由于软件在运行时会利用所以的cpu空闲时间来进行降温,但windows不能分辨普通的cpu占用和降温软件的降温指令之间的区别,因此cpu始终显示100%,这个就不必担心了,不影响正常的系统运行。
在处理较大的word文件时由于word的拼写和语法检查会使得cpu累,只要打开word的工具-选项-拼写和语法把”检查拼写和检查语法“勾去掉。
单击avi视频文件后cpu占用率高是因为系统要先扫描该文件,并检查文件所有部分,并建立索引;解决办法:右击保存视频文件的文件夹-属性-常规-高级,去掉为了快速搜索,允许索引服务编制该文件夹的索引的勾。
此外就是病毒攻击成功的病症,会占用大量系统资源,使CPU占用率达到100%,电脑运行异常缓慢,会提示内存不足。建议进入安全模式下,设法清除已经潜藏在你的机器上的木马、病毒。
打开SQL Server Profiler
新建跟踪
a点击新建跟踪,并设置好数据库连接
b设置跟踪属性,选择模板“Standard”
c切到“事件选择”进行跟踪设置
1) 只保留如下两个事件选项
2) 点击列筛选
3) 进行详细筛选设置
设置CPU时间作为筛选条件,单位毫秒(用于跟踪耗CPU占用较长的查询,可设置为大于等于20000,按CPU内核数×1000,可以跟踪CPU占用100%大于1秒的查询)
点击运行,跟踪语句,定位CPU占用较多的语句
如下图所示,CPU占用2660146毫秒,CPU为24 核,则至少CPU占用100%耗时2660146/24/1000 = 110秒才可以执行好相应的 *** 作
4
根据语句特征,在你的服务器程序中找到相应的功能,作出修正
41) 分析查询中需要检索数据量较大的部分,作出简单修正(如注销)
42) 更新后重新执行此查询,查看profiler中是否CPU占用消失
43) 如果已消失说明问题定位正确,可以优化查询,若CPU占用任然很多,则回滚修改,继续41 *** 作
以上就是关于Oracle内存和CPU占用率极高,是什么问题全部的内容,包括:Oracle内存和CPU占用率极高,是什么问题、mysql 怎么查询某个数据库占用cpu使用率、sql server cpu占用过高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)