一次监控系统进程影响的业务响应的问题及解决
也是十一期间,业务反应出帐过程中某程序执行特别慢,怀疑是oracle数据库有问题,需要尽快处理,根据业务提供的相关信息,相关业务从wwzg3主机发起,业务主要使用了账本通知表www_BOOK_CHG_NOTIFY和短信表WWW.www_busi_sms。
提供了一个sql语句
select *
from WWW.www_book_scheme_fee_0104 a,
WWW.www_book_scheme_rec_0104 b,
WWW.crm_user c
where a.so_nbr = b.so_nbr
and a.wwwt_id = c.wwwt_id
and a.after_month <= to_char(sysdate, 'yyyymm')
and c.phone_id = b.phone_id
and b.sts = 0
and a.sts = 0;
www.2cto.com
1,登录数据库主机,发现主机资源充足,系统资源不存在瓶颈,CPU利用率只有40%
SQL> !sar -u 3 5
HP-UX wbdb1 B.11.31 U ia64 10/04/12
12:24:01 %usr %sys %wio %idle
12:24:04 27 4 8 60
12:24:07 30 3 7 60
12:24:10 28 2 8 62
12:24:13 30 4 10 56
12:24:16 30 3 10 57
Average 29 3 9 59
2,开发提供的sql执行速度特别快,相关业务表唯一有点异常的sql执行计划如下,基本上都是全表扫描,但目前数据库中没有发现该语句正在运行 www.2cto.com
因此排除
[sql]
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 430 | | 87768 (1)| | |
| 1 | TABLE wwwESS BY LOCAL INDEX ROWID| CRM_USER | 1 | 20 | | 21 (0)| | |
| 2 | NESTED LOOPS | | 1 | 430 | | 87768 (1)| | |
| 3 | HASH JOIN | | 385 | 154K| 2832K| 79678 (1)| | |
| 4 | HASH JOIN | | 10999 | 2696K| 343M| 75513 (1)| | |
| 5 | MERGE JOIN CARTESIAN | | 5634K| 279M| | 20348 (1)| | |
| 6 | TABLE wwwESS FULL | www_BOOK_SCHEME_COND | 2189 | 32835 | | 39 (0)| | |
| 7 | BUFFER SORT | | 2574 | 95238 | | 20309 (1)| | |
| 8 | TABLE wwwESS FULL | www_BOOK_SCHEME_SAP_MAP | 2574 | 95238 | | 9 (0)| | |
| 9 | TABLE wwwESS FULL | www_BOOK_SCHEME_REC_0104 | 2306K| 437M| | 14986 (2)| | |
| 10 | TABLE wwwESS FULL | www_BOOK_SCHEME_FEE_0104 | 80636 | 12M| | 3373 (2)| | |
| 11 | PARTITION RANGE ALL | | 1 | | | 20 (0)| 1 | 10 |
| 12 | INDEX RANGE SCAN | IDX_USER_PHONE | 1 | | | 20 (0)| 1 | 10 |
---------------------------------------------------------------------
www.2cto.com
3,数据库中的top 10 sql看,没有发现来自wwzg3主机的异常sql,基本上都来自wbzc4
awr本处省略
4,通过以上推断,数据库没有任何问题,于是转向查看运行相关进程的主机是否异常,果然问题不在数据库,在wwzg3主机资源利用率过高,系统利用率100%
CPU利用率100%,被%sys消耗,
root@wwzg3[/]#sar -u 3 5
HP-UX wwzg3 B.11.31 U ia64 10/04/12
13:47:38 %usr %sys %wio %idle
13:47:41 30 70 0 0
13:47:44 30 70 0 0
13:47:47 30 69 0 0
13:47:50 31 69 0 0
13:47:53 30 69 0 1
Average 30 69 0 0
www.2cto.com
5,262个idcp.sh进程正在运行
root@wwzg3[/]#ps -ef|grep idcp.sh|wc -l
262
root 20282 10168 1 13:55:30 pts/17 0:00 grep 7675
root@wwzg3[/]#ps -ef|grep idcp.sh
root 10315 10146 0 13:55:40 0:00 /usr/bin/sh /ho