dblink 造成 oracle 服务器 内存_性能故障之内存抖动的诊断过程
下面的分享是笔者在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大小的解决方案,并紧急申请实施窗口。
实施方案如下:
参数修改后,数据库恢复正常
09:00实时监控未见异常;
12:00实时监控未见异常;
17:00实时监控未见异常;
21:50实时监控未见异常;
至此该性能故障解决完成。通过该性能故障的处理过程,我们发现在运维的过程如果现场有相关运维工具平台,对于日常工作及性能故障的处理都会起到事半功倍的效果。毕竟工欲善其事,必先利其器。
dblink 造成 oracle 服务器 内存_性能故障之内存抖动的诊断过程相关推荐
- Linux性能学习(2.3):内存_为什么分配的内存比申请的内存大16个字节
文章目录 1 验证申请不同内存,系统分配机制 1.1 代码 1.2 测试 1.3 结论 2 为什么会多分配内存 3 为什么会有4字节不可使用 参考资料: https://www.gnu.org/sof ...
- 32位jdk最大内存_你了解Java 内存区域和GC机制吗?
目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...
- 查看程序占用内存_电脑扩展了内存 但还总是提示内存不足?
今天英特尔中国解答了一个大家可能遇到的电脑内存问题,电脑扩展了内存但还总提示内存不足?这是怎么回事呢? 英特尔表示,这很可能是某个程序的代码错误导致电脑内存溢出,之前被占用的内存无法释放.用户可以进入 ...
- 联想服务器看内存型号,合肥联想服务器内存条_性能无约束
给你简单介绍下吧!联想用户可以任意屏蔽到其他服务器,该网站在上面通过数据库通过网络购买商业计算机,当您和外界进行语音交流时,便不必等上面的流量提前得到恢复了.当您在开始搜索和下载新版软件后,由联想给您 ...
- oracle sequences优化_性能优化-Oracle RAC中的Sequence Cache问题
性能优化-Oracle RAC中的Sequence Cache问题 enq: SQ - contention 在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这 ...
- openjdk platform binary 内存_记一次内存溢出导致的生产事故
背景 因为同事的离职,半路被迫接手的一个可视化项目,使用ElasticSearch作为OLAP数据库.Docker作为部署工具等,突然有一天项目现场环境出现JVM内存溢出问题,被迫披挂上阵定位问题的原 ...
- jvm分配内存_为JVM分配内存:一个案例研究
jvm分配内存 这篇文章是关于最近的性能调整练习的. 与往常一样,这些开始于关于症状的模糊表述. 这次,魔鬼采取了"应用程序速度慢,我们无权访问源代码的形式. 我们有什么选择来改善局势&qu ...
- python 内存_一行Python解决内存问题
原标题:一行Python解决内存问题 内存不足是项目开发过程中经常碰到的问题,我和我的团队在之前的一个项目中也遇到了这个问题,我们的项目需要存储和处理一个相当大的动态列表,测试人员经常向我抱怨内存不足 ...
- 怎么设置java内存_如何修改jvm内存 内存设置过大
斯蒂芬大帝 java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制.否则可能导致应用程序宕掉.-Xms128m:表示JVM Heap(堆内存)最小尺寸128MB,初始 ...
最新文章
- 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)
- android 从assets和res中读取文件(转)
- unity 生成assestbundle资源的插件
- 【Python】实例3:天天向上的力量与微实例:星期转换、恺撒密码
- Atitit Data Matrix dm码的原理与特点
- matlab 导出asc文件,将* .asc文件保存为Excel文件
- Locust接口压力测试
- 电力猫服务器无响应,电力猫怕什么?TP-Link电力线适配器实测
- web前端emoji表情
- win10永久设置护眼颜色
- html 剩余时间 自动减,HTML+CSS+JS实现今天的日期和今天剩余的时间
- 计算机许可管理器服务器名称是什么意思,部署 - 安装后的许可证服务器是什么?...
- 设计模式真的能改善软件质量吗 (二)
- 『Others』一键关闭所有应用程序
- 无线振弦采发仪VS104~416振弦传感器数据采集仪应用工程监测实用
- linux检测不到数位板,[转载]ubuntu下gimp使用友基数位板
- MapReduce调优方案
- 中职计算机基础应用教程ppt,多媒体在中职计算机应用基础教学中的应用
- python数据科学速查表_Python数据科学速查表:中级
- 操作系统实验二(调度算法模拟-先进先出-时间片轮转法-优先服务调度算法)
热门文章
- java memcachedclient_Java memcached client怎样建立长连接
- 【SpringCloud】Hystrix:熔断
- Zookeeper的安装与配置
- 效果提升7%、速度增加220%,OCR开源神器PaddleOCR再迎升级
- PCL学习笔记,区域生长分割(region growing segmentation)
- python高效 二分法查找
- vs opencv4 imread读不到图片问题的解决方法
- vs修改 exe名字
- Timers cannot be stopped from another thread
- pytorch单维筛选 相乘