一次诊断和解决CPU利用率高的问题分析

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

本文作者:Allan(allan@itpub.net)

 

经常会遇到 CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了 CPU资源,导致整个系统性能低下。当然,引起严重性能低下的SQL语句的原因是多方面的,具体的原因要具体的来分析,下面通过一个实际的案例来说明如何来诊断和 解决 CPU利用 率高的这类问题。

:solairs8

数据库:Oracle9.2.0.4

问题描述:现场工程师汇报数据库非常慢,几乎所有应用操作均无法正常进行。

首先登陆主机,执行top发现 CPU资源几乎消耗殆尽,存在很多占用 CPU很高的进程,而内存和I/O都不高,具体如下:

lastpid:26136; loadaverages: 8.89, 8.91, 8.12                                                                      

216processes:204sleeping,8running,4on CPU

CPUstates: 0.6%idle,97.3%user, 1.8%kernel, 0.2%iowait, 0.0%swap

Memory:8192Mreal,1166Mfree,14Mswapinuse,8179Mswapfree

PIDUSERNAMETHRPRINICE SIZE  RESSTATE  TIME    CPUCOMMAND

25725oracle    1 50   04550M4508M CPU2  12:2311.23%oracle

25774oracle    1 41   04550M4508Mrun   14:2510.66%oracle

26016oracle    1 31   04550M4508Mrun    5:4110.37%oracle

26010oracle    1 41   04550M4508Mrun    4:40 9.81%oracle

26014oracle    1 51   04550M4506M CPU6   4:19 9.76%oracle

25873oracle    1 41   04550M4508Mrun   12:10 9.45%oracle

25723oracle    1 50   04550M4508Mrun   15:09 9.40%oracle

26121oracle    1 41   04550M4506M CPU0   1:13 9.28%oracle

于是先查看数据库的告警日志ALERT文件,并没有发现有什么错误存在,日志显示数据库运行正常,排除数据库本身存在问题。

然后查看这些占用 CPU资源很高的Oracle进程究竟是在做什么操作,使用如下SQL语句:

selectsql_text,spid,v$session.program,process from

v$sqlarea,v$session,v$process

wherev$sqlarea.address=v$session.sql_address

andv$sqlarea.hash_value=v$session.sql_hash_value

andv$session.paddr=v$process.addr

andv$process.spidin(PID);

用top中占用 CPU很高的进程的PID替换脚本中的PID,得到相应的Oracle进程所执行的SQL语句,发现占用 CPU资源很高的进程都是执行同一个SQL语句:

SELECTd.domainname,d.mswitchdomainid,a.SERVICEID,a.SERVICECODE,a.USERTYPE,a.STATUS,a.NOTIFYSTATUS,to_char(a.DATECREATED,'yyyy-mm-ddhh24:mi:ss')DATECREATED,VIPFLAG,STATUS2,CUSTOMERTYPE,CUSTOMERID FROMservicea,gatewaylocb,subbureaunumberc,mswitchdomaind  WHEREb.mswitchdomainid=d.mswitchdomainidandb.gatewaysn=c.gatewaysn ANDa.ServiceCodelikec.code||'%'anda.serviceSpecID=1anda.status!='4'anda.status!='10' anda.servicecodelike'010987654321%'andSubsidiaryID=999999999共7页  1      
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值