下面的分享是笔者在2月份处理的一起性能故障,笔者将分析过程分享出来,给大家起到抛砖引玉的作用。

接到XXX项目组报障:XX系统Connecttodatabasetimeout,请求协助检查数据库是否有异常。通过DPM检查数据库状态(现场所有交维,为交维的数据库都纳入了DPM),发现大量cursor: pin S wait on X(数据库还未交维平台侧,纯友情协助);

使用DPM下钻功能,找到阻塞sql;

通过查看DPM概览发现确实存在大量等待事件告警信息:

与业务侧紧急沟通核实,确定已造成业务积压,考虑到服务连续性,本着先抢通再核查根因的原则,经过应用侧同意,对堵塞会话予以查杀,以保证业务的连续性。堵塞会话查杀后,数据库恢复,业务恢复正常。

故障第一次分析:

采用故障时间段相关现场信息排除法进行相关分析。

  • version count 信息

Version count正常,非此次故障原因,可排除。

  • 相关负载及硬解析物理读等

硬解析在正常范围内,非此次故障原因,可排除

  • DDL变动信息

相关对象最后DDL操作和此次故障时间不一致,可排除

  • shared pool 变动信息

Shared pool 存在抖动情况,内存抖动是导致cursor: pin S wait on X等待事件发生原因之一;

  • 会话信息

根据会话变动找出阻塞源以便排查原因;

  • session变动量

故障时段session并发连接数量明显增加。

造成cursor: pin S wait on X几种原因:

  • version count过高

  • 硬解析过多

  • 在问题时段有做DDL操作,导致异常阻塞

  • sql用的对象使用了DBLINK访问,dblink不通

  • shared pool抖动造成

  • 业务变更

  • 相关bug

根据故障时间段的相关数据一一排除version count、硬解析、ddl、dblink等原因,查找相关sql执行计划并分析,查找相关类似bug文档,排查相关原因分析,初步确定shared pool抖动为本次故障原因;

分析到这里时,客户侧也在催促结论,需要向上汇报。逐将上述分析过程整理发于客户侧。

2月22日第二次发生故障

晚上睡觉一直惦记着这事儿,整个晚上睡的都不踏实。早上到达现场第一时间登陆巡检发现问题复现,继续用排除法进行原因分析。

  • 未共享sql

根据查询显示未绑定变量sql在正常范围内,非造成此次性能故障原因

  • sga变动

通过awr显示sga存在内存抖动

  • 查询源阻塞信息

为保障业务连续性,联系业务侧对堵塞会话予以核实及查杀。

业务恢复后继续分析:

造成抖动的ddl信息

  • 查询相关官方文档

  • 收集相关信息

进行故障时间段awr、ash、addm等报告的收集及shared pool变动信息查询并进行hang分析;

2月22日第三次发生故障

正在分析的时候,同事通过DPM实时监控发现问题再次出现,与业务侧核实后立马进行会话查杀,以防止影响业务感知。

根据addm报告、shared pool变化信息结合DPM等待事件相关故障开始时间等信息的联合诊断,确定shared pool过小是导致此次性能故障的原因,依据如下:

1、addm报告显示(见下图),shared pool latches 对此次故障的影响;

2、对比shared pool数据与DPM所记录等待情况,发现在故障发生时,shared pool发生明显抖动且与等待事件发生时间一致。

Shared pool 和故障等待开始时间对应表格

等待事件开始时间

Shared   pool抖动时间

2020-02-21   22:09

2020-02-21   22:09

2020-02-22   08:54

2020-02-22   08:54

2020-02-22   10:26

2020-02-22   10:27

原因找到,马上制定调整shared pool大小的解决方案,并紧急申请实施窗口。

实施方案如下:

参数修改后,数据库恢复正常

0900实时监控未见异常;

1200实时监控未见异常;

1700实时监控未见异常;

2150实时监控未见异常;

至此该性能故障解决完成。通过该性能故障的处理过程,我们发现在运维的过程如果现场有相关运维工具平台,对于日常工作及性能故障的处理都会起到事半功倍的效果。毕竟工欲善其事,必先利其器。

dblink 造成 oracle 服务器 内存_性能故障之内存抖动的诊断过程相关推荐

  1. Linux性能学习(2.3):内存_为什么分配的内存比申请的内存大16个字节

    文章目录 1 验证申请不同内存,系统分配机制 1.1 代码 1.2 测试 1.3 结论 2 为什么会多分配内存 3 为什么会有4字节不可使用 参考资料: https://www.gnu.org/sof ...

  2. 32位jdk最大内存_你了解Java 内存区域和GC机制吗?

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  3. 查看程序占用内存_电脑扩展了内存 但还总是提示内存不足?

    今天英特尔中国解答了一个大家可能遇到的电脑内存问题,电脑扩展了内存但还总提示内存不足?这是怎么回事呢? 英特尔表示,这很可能是某个程序的代码错误导致电脑内存溢出,之前被占用的内存无法释放.用户可以进入 ...

  4. 联想服务器看内存型号,合肥联想服务器内存条_性能无约束

    给你简单介绍下吧!联想用户可以任意屏蔽到其他服务器,该网站在上面通过数据库通过网络购买商业计算机,当您和外界进行语音交流时,便不必等上面的流量提前得到恢复了.当您在开始搜索和下载新版软件后,由联想给您 ...

  5. oracle sequences优化_性能优化-Oracle RAC中的Sequence Cache问题

    性能优化-Oracle RAC中的Sequence Cache问题 enq: SQ - contention 在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这 ...

  6. openjdk platform binary 内存_记一次内存溢出导致的生产事故

    背景 因为同事的离职,半路被迫接手的一个可视化项目,使用ElasticSearch作为OLAP数据库.Docker作为部署工具等,突然有一天项目现场环境出现JVM内存溢出问题,被迫披挂上阵定位问题的原 ...

  7. jvm分配内存_为JVM分配内存:一个案例研究

    jvm分配内存 这篇文章是关于最近的性能调整练习的. 与往常一样,这些开始于关于症状的模糊表述. 这次,魔鬼采取了"应用程序速度慢,我们无权访问源代码的形式. 我们有什么选择来改善局势&qu ...

  8. python 内存_一行Python解决内存问题

    原标题:一行Python解决内存问题 内存不足是项目开发过程中经常碰到的问题,我和我的团队在之前的一个项目中也遇到了这个问题,我们的项目需要存储和处理一个相当大的动态列表,测试人员经常向我抱怨内存不足 ...

  9. 怎么设置java内存_如何修改jvm内存 内存设置过大

    斯蒂芬大帝 java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制.否则可能导致应用程序宕掉.-Xms128m:表示JVM Heap(堆内存)最小尺寸128MB,初始 ...

最新文章

  1. 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)
  2. android 从assets和res中读取文件(转)
  3. unity 生成assestbundle资源的插件
  4. 【Python】实例3:天天向上的力量与微实例:星期转换、恺撒密码
  5. Atitit Data Matrix dm码的原理与特点
  6. matlab 导出asc文件,将* .asc文件保存为Excel文件
  7. Locust接口压力测试
  8. 电力猫服务器无响应,电力猫怕什么?TP-Link电力线适配器实测
  9. web前端emoji表情
  10. win10永久设置护眼颜色
  11. html 剩余时间 自动减,HTML+CSS+JS实现今天的日期和今天剩余的时间
  12. 计算机许可管理器服务器名称是什么意思,部署 - 安装后的许可证服务器是什么?...
  13. 设计模式真的能改善软件质量吗 (二)
  14. 『Others』一键关闭所有应用程序
  15. 无线振弦采发仪VS104~416振弦传感器数据采集仪应用工程监测实用
  16. linux检测不到数位板,[转载]ubuntu下gimp使用友基数位板
  17. MapReduce调优方案
  18. 中职计算机基础应用教程ppt,多媒体在中职计算机应用基础教学中的应用
  19. python数据科学速查表_Python数据科学速查表:中级
  20. 操作系统实验二(调度算法模拟-先进先出-时间片轮转法-优先服务调度算法)

热门文章

  1. java memcachedclient_Java memcached client怎样建立长连接
  2. 【SpringCloud】Hystrix:熔断
  3. Zookeeper的安装与配置
  4. 效果提升7%、速度增加220%,OCR开源神器PaddleOCR再迎升级
  5. PCL学习笔记,区域生长分割(region growing segmentation)
  6. python高效 二分法查找
  7. vs opencv4 imread读不到图片问题的解决方法
  8. vs修改 exe名字
  9. Timers cannot be stopped from another thread
  10. pytorch单维筛选 相乘