性能优化之高Log file sync等待实战案例分享

news2025/1/8 12:14:57

故障情况

AWR报告如下:

 

 

 

 

之后他们把大部分业务停掉后,Log file sync等待事件还是非常高。

通过对比昨天跟今天相同时间的AWR,在业务量小非常多的情况,等待时间还是高非常大。

诊断过程

log file sync等待事件首先判断当前系统IO是否存在问题,看操作系统日志没有相关的报错,执行IO测试,也显示IO处于正常状态,详细查看AWR报告,AWR显示数据库写IO及读IO都还比较正常。对比昨天跟今天的AWR报告,也可以看出IO读写性能跟昨天相比差别不大,今天采集的这个时间段由于停了大部分业务,IO相比昨天反而更优,但是日志切换的等待时间反而要增加8秒。

 根据Tanel Poder前辈写的《Log file sync,LGWR》诊断手册里的Commit log file sync flow

 

从上图中,我们可以清楚的看到commit整个流程。

1、当user发起一个commit后;

2、前端进程(即Server 进程)会post一个信息给lgwr进程,告诉它去写redo buffer。

3、当LGWR进程得到指示后,开始调用操作系统函数进行物理写,在进行物理写的这段时间内,会出现log file parallel write等待。

4、当LGWR完成wrtie操作之后,LGWR进程会返回一个信息给前端进程(Server进程),告诉它,我已经写完了,你可以完成提交了。

5. user 完成commit操作。

从上面的流程图,结合AWR 里log file parallel write及用户IO及系统IO的等待时间都很短,因此我们可以判断问题不是出在IO性能上。那么问题应该出在阶段2及阶段5上。

根据mos文章:

Troubleshooting: 'Log file sync' Waits (Doc ID 1376916.1)

Adaptive Log File Sync Optimization (Doc ID 1541136.1)

Adaptive Switching Between Log Write Methods can Cause 'log file sync' Waits (Doc ID 1462942.1)

发现Oracle11g 之后Oracle新推出一种日志同步方式,称为自适应方式,在Oracle 11.2.0.3版本之后启用这个特性

Initially the LGWR uses post/wait and according to an internal algorithm evaluates whether polling is better. Under high system load polling may perform better because the post/wait implementation typically does not scale well. If the system load is low, then post/wait performs well and provides better response times than polling. Oracle relies on internal statistics to determine which method should be used.  Because switching between post/wait and polling incurs an overhead, safe guards are in place in order to ensure that switches do not occur too frequently.

根据文单的描述,检查系统的负载情况,发现今天业务系统在14点时负载很高,日志切换达136次,之后业务恢复正常

 

检查当前的系统,发现当前系统LGWR正采用Polling方式。

SQL> select name,value from v$sysstat where name in ('redo synch poll writes','redo synch polls');

redo synch poll writes   6248

redo synch polls        8843

故障原因分析

由于业务系统在14点时负载变为非常高,因此Oracle把LGWR写方式切换为Polling方式,以保持更高的性能,但是当业务负载降下来时,正常情况下LGWR应该切换回原有Post/wait 方式,但是这次没有切换,还一直采用Polling方式。判断碰到BUG,没有切换,因此导致性能变差(网上文章写polling的间隔是10ms,Post/wait 的间隔是1~2ms,在mos上没找到文章有写这个时间)

相关的BUG:

 

在11.2.03版本上可以应用DATABASE PATCH SET UPDATE 11.2.0.3.14 (INCLUDES CPUAPR2015)解决这个BUG。

解决方案

Workaround

Disable adaptive log file sync by setting "_use_adaptive_log_file_sync"=false

ALTER SYSTEM SET "_use_adaptive_log_file_sync"=FALSE ;

或者重启实例也可以解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/599610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“微商城”项目(1环境搭建)

开发工具分享: 百度网盘: 链接:https://pan.baidu.com/s/1lSsCjf-_zx1ymu6uZeG26Q?pwdhuan 提取码:huan 一、环境搭建说明 本项目服务端环境要求为 Windows Apache PHP MySQL。 下面介绍如何搭建环境,部署服…

CW32系列模数转换器(ADC)

模数转换器(ADC)的主要功能是将模拟量转换为数字量,方便MCU进行处理。下面以CW32L083为例介绍CW系列的模数转换器的特点和功能,并提供演示实例。 一、概述 CW32L083 内部集成一个 12 位精度、最高 1M SPS 转换速度的逐次逼近型模…

位操作符的应用

目录 位操作符的概念: 一、&(按位与):两个整数的补码对应的二进制位有0则为0,两个同时为1才为1,得到的数仍为补码。 二、|(按位或):两个整数的补码对应的二进制位…

Effective第三版 中英 | 第2章 创建和销毁对象 | 当面临多个参数的构造器时考虑使用构建器

文章目录 Effective第三版前言第2章 创建和销毁对象当面临多个参数的构造器时考虑使用构建器 Effective第三版 前言 大家好,这里是 Rocky 编程日记 ,喜欢后端架构及中间件源码,目前正在阅读 effective-java 书籍。同时也把自己学习该书时的笔…

【KKT】∇f(x)+λ∇g(x)=0中λ的讨论

Karush-Kuhn-Tucker (KKT)条件 〇、问题背景 在阅读 Karush-Kuhn-Tucker (KKT)条件 时,不太能理解 ∇ f \nabla f ∇f 的方向,以及 ∇ g \nabla g ∇g 的方向: 为什么 ∇ f \nabla f ∇f 是指向可行域内部, ∇ g \nabla g ∇g…

Java多线程方面知识

目录 1.程序、进程、线程 2.进程与线程的内存解析 3.并发与并行 4.Java程序的线程 5.多线程的创建:方式一:继承于Thread类 6.start方法的作用 7.使用start()时要注意的问题 8.Thread类中的一些方法 9.线程的优先级 10.多线程的创建&#xff1a…

【JAVA】清缓存(打断点删除 / 新增表或字段无效)

一. 打断点无效 情景 新写了一个获取列表数据接口,前端调用的,获取到的数据为空数组。在数据库中查看,是有数据的,但是调用接口返回数据为空。接下来就打断点啦,发现无效!表现如下 没有可执行的…

【Bio】牙的分类

文章目录 IncisorCentral IncisorLateral Incisor Canine / CuspidPremolarFirst PremolarSecond Premolar MolarFirst MolarSecond MolarThird Molar / Wisdom Tooth Ref Incisor Central Incisor Lateral Incisor Canine / Cuspid Premolar First Premolar Second Prem…

第六十二天学习记录:C语言进阶:C语言预处理2

带副作用的宏参数 当宏参数在宏的定义中出现超过一次的时候,如果参数带有副作用,那么你在使用这个宏的时候就可能出现危险,导致不可预测的后果。副作用就是表达式求值的时候出现的永久性效果。例如: x1;//不带副作用 x;//带有副作…

安全认证:

1. 认证概述 为什么要有认证? 防止非法路由器接入企业内网的ospf路由器,保护内网安全 2. 认证方式 认证方式分为接口认证和区域认证,接口认证和区域认证没有本质的区别,接口认证是当区域内链路过多的情况下,接口认证…

Java网络开发(Tomcat)—— Servlet学习 Web相关背景知识 JavaWeb项目初步

本文目录 引出一、软件架构BS和CS二、实现Web服务的条件和步骤三、Tomcat搭建Web项目初步1.pom.xml文件配置2.web.xml文件更新3.Tomcat运行环境配置4.项目文件层级解析 四、JavaWeb项目文件分类(1)静态文件—存放位置(2)动态文件-…

【用人话讲算法】leetcode无重复字符的最长子串

【用人话讲算法】leetcode无重复字符的最长子串 文章目录 【用人话讲算法】leetcode无重复字符的最长子串题目简单思路(暴力)优化思考怎么写代码?怎么到下一个?whilefor 思路总结while和for循环总结 题目 题目的意思是说&#xff…

一台电脑上安装多个版本的python,运行互不干扰,显示位置的一些命令,

首先需要知道一些命令: pip show 包名 可以使用pip show 包名的方式显示位置 pip list pip方式显示的是当前环境下的库 os.environ.get() python中os模块获取环境变量的一个方法 Python os.environ.get()的用法 …

使用Git LFS上传Unity大型资源文件

在使用Unity制作结课作业时,使用到git工具进行版本控制与多人协作。在提交项目至远程仓库的过程中,git bash提示了以下报错: remote: warning: File Assets/Models/Z_India_5.29.fbx is 57.31 MB; this is larger than GitHubs recommended m…

利用环回口建立IBGP邻居

利用环回口建立IBGP邻居 BGP的稳定性 IBGP : 1.一般使用环回口建立IBGP邻居 2.指定建立IBGP邻居的源地址为lookback地址 EBGP : 1.一般使用直连接口建立EBGP邻居关系 2.如果想使用环回口建立EBGP邻居,需要将TTL值修改为大于1,默认TTL1 修改命令…

在win10/11的右键菜单添加电源选项

前言: 今天,博主从网上找到了在右键菜单中添加电源选项的方法,觉得挺实用的所以来教大家 方法: 下载(懒人专用,直接打开文件即可): csdn中下载(启用和关闭文件都有&a…

基于 Docker_redis6.0.8 实现 Redis 集群扩缩容

文章目录 单机部署数据分区方案集群部署集群容错测试集群扩容测试集群缩容测试 LXL:这玩意太枯燥,看完需要耐心 ~~~ 单机部署 通过 dockerhub 查找 redis 镜像,选择 6.0.8 版本。创建挂载目录,并赋予权限。 mkdir -p /var/docker…

MicroPython应用基础-使用Thonny IDE

MicroPython应用基础-使用Thonny IDE 文章目录 MicroPython应用基础-使用Thonny IDE引言Thonny简介使用Thonny连接到MicroPython开发板使用Thonny的REPL窗口运行Python语句在Thonny中保存Python程序文件至MicroPython开发板中运行使用Thonny的注意要点 引言 在很长一段时间内&…

[论文分享]TimeMAE:解耦掩码自编码器时间序列的自监督表示

论文题目:TimeMAE: Self-Supervised Representations of Time Series with Decoupled Masked Autoencoders 论文地址:https://arxiv.org/abs/2303.00320 代码地址:https://github.com/Mingyue-Cheng/TimeMAE 1 摘要 利用自监督预训练增强基于…

Flume和Kafka的组合使用

一.安装Kafka 1.1下载安装包 通过百度网盘分享的文件:复制链接打开「百度网盘APP 即可获取」 链接:https://pan.baidu.com/s/1vC6Di3Pml6k1KMbnK0OE1Q?pwdhuan 提取码:huan 也可以访问官网,下载kafka2.4.0的安装文件 1.2解…