热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Oracle等待事件DFSlockhandle

在做性能压力测试,测试结果不能通过,获取现场一个小时的AWR报告,发现大量的等待事件,数据库是RAC,版本是Oracle11.2.0.4.0。

在做性能压力测试,测试结果不能通过,获取现场一个小时的AWR报告,发现大量的等待事件,数据库是RAC,版本是Oracle 11.2.0.4.0。

在做性能压力测试,测试结果不能通过,获取现场一个小时的AWR报告,发现大量的等待事件,数据库是RAC,版本是Oracle 11.2.0.4.0。

Snap IdSnap TimeSessionsCursors/SessionInstances

Begin Snap: 1607 21-10月-14 20:00:03 560 67.9 2

End Snap: 1608 21-10月-14 21:00:11 573 12.4 2

Elapsed: 60.13 (mins)

DB Time: 2,090.75 (mins)

EventWaitsTotal Wait Time (sec)Wait Avg(ms)Wait Class

rdbms ipc reply 32,876,281 44.9K 1 35.8 Other

DB CPU 21.3K 17.0

direct path read 435,808 18.8K 43 15.0 User I/O

DFS lock handle 4,204,866 7977.9 2 6.4 Other

log file sync 8,541 252.7 30 .2 Commit

1. 排在第一的等待事件是rdbms ipc reply , 解释是The rdbms ipc reply Oracle metric event is used to wait for a reply from one of the background processes.说明lgwr,dbwr等后台进程空闲,等待前台进程给予他们的工作任务。DFS lock handle这个等待事件很可疑,官方解释是:

The session waits for the lock handle of a global lock request. The lock handle identifies a global lock. With this lock handle, other operations can be performed on this global lock (to identify the global lock in future operations such as conversions or release). The global lock is maintained by the DLM.

大致意思是无法获得global cache lock的handle时候所记录的等待事件。

2. 在网上看了下大家的处理方式,序列的cache过小,数据库服务器CPU过高,做过相应的调整和监控,,都不解决问题。在做性能测试的时候,

select chr(bitand(p1,-16777216)/16777215) || chr(bitand(p1, 16711680)/65535) "Lock",

to_char(bitand(p1, 65536)) "Mode",

p2, p3 , seconds_in_wait

from v$session_wait

where event = 'DFS lock handle';

发现了BB锁,意思是:2PC distributed transaction branch across RAC instances DX Serializes tightly coupled distributed transaction branches。

大致意思是分布式事务两个RAC实例中across。我随即做出调整,将weblogic连接改为只是连接一个RAC节点,再进行测试。测试结果如下:

Snap IdSnap TimeSessionsCursors/SessionInstances

Begin Snap: 1680 24-10月-14 12:00:13 864 9.5 2

End Snap: 1681 24-10月-14 13:00:17 863 9.9 2

Elapsed: 60.07 (mins)

DB Time: 80.28 (mins)

EventWaitsTotal Wait Time (sec)Wait Avg(ms)Wait Class

DB CPU 2335.6 48.5

rdbms ipc reply 5,326,201 645.6 0 13.4 Other

gc buffer busy acquire 39,052 226.7 6 4.7 Cluster

DFS lock handle 672,757 225.8 0 4.7 Other

DFS lock handle减少了非常多,但还是存在,不过性能测试结果好了很多。

3. 如何彻底解决呢?先说下DFS lock handle,说简单一点就是一个object在不同的实例中DML,每个实例在自己处理自己的object。这是一个权衡的问题,如果weblogic动态连接实例,就无法保证每次处理自己的object,但这样可以容灾,其他的实例挂了也没问题;如果是指定单独的实例,相对于动态是优、缺点是反的。还有一种说法是metalink中有关于DFS lock handle的都是bug,目前尚不清楚数据库升级后是不是会好一点。

Oracle 11g下重现library cache lock等待事件

Oracle 11g等待事件:db file async I/O submit

[Oracle] 常见的等待事件

oracle Log Buffer内部机制以及常见等待事件

RAC数据库中的'log file sync'等待事件

Oracle Tuning Log File Sync 等待事件的几种策略

Oracle等待事件详细分析


推荐阅读
  • 尤洋:夸父AI系统——大规模并行训练的深度学习解决方案
    自从AlexNet等模型在计算机视觉领域取得突破以来,深度学习技术迅速发展。近年来,随着BERT等大型模型的广泛应用,AI模型的规模持续扩大,对硬件提出了更高的要求。本文介绍了新加坡国立大学尤洋教授团队开发的夸父AI系统,旨在解决大规模模型训练中的并行计算挑战。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
author-avatar
Edison小磊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有