RAC中一次混乱的性能诊断过程 1

简介:                      RAC中一次混乱的性能诊断过程    众所周知在RAC中,问题很可能来自于CACHE FUSION(内存融合)的机制,简单的说就是CACHE BUFFER中的块在内存融合的机制下通过LMD进程进行传递,比如我节点1...

                     RAC中一次混乱的性能诊断过程

   众所周知在RAC中,问题很可能来自于CACHE FUSION(内存融合)的机制,简单的说就是CACHE BUFFER中的块在内存融合的机制下通过LMD进程进行传递,比如我节点1需要访问数据块A,通过SEND MESSAGEMASTER节点询问块A所在的节点,MASTER告诉节点1 A块在节点2BUFFER CACHE中,这个时候又可能是当前读和一致性读,如果块正在被修改就会构架PI来进行一致性读,传递块给节点1,这个时候PCM锁是X模式,如果当前块A没有被修改,只是被节点2SELECT,这个时候就是当前读,传递当前块给节点1,这个时候PCM锁是S模式,这个大概就是内存融合的机制。

  最近遇到一个问题我们数据库服务器在高负载的情况下,CPU降低到40%左右,我试图找到问题,因为数据库服务器是RAC,并且AWRRPTTOP5 EVENT如下:

Top 5 Timed Events

Event

Waits

Time(s)

Avg Wait(ms)

% Total Call Time

Wait Class

CPU time

 

4,677

 

79.7

 

gc cr multi block request

6,108,620

793

0

13.5

Cluster

gc buffer busy

117,685

138

1

2.3

Cluster

db file sequential read

65,355

105

2

1.8

User I/O

gc current block 2-way

205,250

79

0

1.3

Cluster

 

首先可以肯定的是这个问题绝对是处在块传递上,解决这样的问题有2个方法

1、  SERVICE 来分离业务,通过分离业务让特定的数据块只在指定的节点里进行访问,避免传递。

2、  尽可能的减少逻辑读,逻辑读少了自然传递的可能性就小了,也就是这一点让我前期的诊断陷入了错误的方向。

分离业务是不能的,因为牵涉太大,所以我自然而然的想到了减少逻辑读,带着这个理念我进入了查看SQL的阶段,首先当然是查看最耗时的SQL

相关文章
|
8月前
|
Oracle Java 关系型数据库
RAC 环境中 gc block lost 和私网通信性能问题的诊断
对于每个节点,以及集群汇总统计信息中的global cache数据块丢失的统计信息("gc cr block lost" 和/或 "gc current block lost") 代表了私网通信的包处理效率低或者包的处理存在异常。
199 0
|
SQL 索引
RAC中一次混乱的性能诊断过程4
Segments by Logical Reads Total Logical Reads: 584,021,980 Captured Segments account for 99.
868 0
|
JavaScript Perl
一次RAC VIP漂移的结果诊断及修复
背景概述 客户的10G数据库VIP出现宕,引起VIP负载到另一个节点 事件支持细节 04:29:56.378 一号机器VIP 出现 went OFFLINE unexpectedly,当天出现这个VIP漂移的故障后为检查VIP宕掉的原因, 对VIP资源启动DEBUG 5模式:./crsctl debug log res "orahostname1.vip:5" 04:38:36.047 一号节点VIP 出现 went OFFLINE unexpectedly。
1981 0
|
SQL 数据库
RAC中一次混乱的性能诊断过程2
SQL ordered by Elapsed Time Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code.
735 0
|
SQL
RAC中一次混乱的性能诊断过程3
SQL ordered by Gets Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code.
711 0
|
Java
RAC中一次混乱的性能诊断过程5
开始我觉得没有过分耗时的语句就不算有性能问题,所以没有关注,后来我又通过语句查看了CLUSTER等待的SQL语句如下: select wait_class_id, wait_class, count(*) cnt    from dba_hist_activ...
919 0
|
1月前
|
存储 运维 Oracle
Oracle系列十八:Oracle RAC
Oracle系列十八:Oracle RAC
|
2月前
|
Oracle 关系型数据库
oracle Hanganalyze no RAC
oracle Hanganalyze no RAC
15 0
|
2月前
|
Oracle 关系型数据库
oracle rac 手工安装补丁,不适用auto
oracle rac 手工安装补丁,不适用auto
25 3