sql 2008服务器内存一直居高不下_经验之谈:内存问题造成数据库性能异常怎么破?...

作者:罗贵林

原文链接:https://mp.weixin.qq.com/s/2e5eKSoGlU9J4Rjq1zwLnw

导读:在使用数据库的过程中,内存不足常常会引起数据库异常。但是内存不足,又会为数据库带来哪些具体的影响呢?本次,我们将通过某客户现场数据库在某个时段内性能严重下降的案例来展示由于主机内存不足而造成数据库日志写入卡顿的问题分析过程。通过本案例,我们也可以对相关问题的分析方法及解决建议有一些深入的了解。

问题描述


2020年1月15号凌晨2点左右客户产线异常,应用后台消息报错业务处理超时。此外,在16号凌晨2点左右和下午2点左右,也发生业务处理超时,影响较大。

故障时段数据库的等待事件信息如下:

74a2d63f8b03b621ee212dee97c1c9fc.png

问题分析


  1. 查看数据库故障时间段的ash信息,可以看到确实在1:56~1:57分的时候,等待比较严重:

select trunc(sample_time, 'mi'), count(1)

from gv$active_session_history

where sample_time >= to_date('2020-01-16 01:50:00', 'yyyy-mm-dd hh24:mi:ss')

and sample_time < to_date('2020-01-16 01:59:00', 'yyyy-mm-dd hh24:mi:ss')

and event is not null

group by trunc(sample_time, 'mi')

order by 1;

c6c0c28886fbce32ebc4d3015bbee4d1.png

2. 进一步分析等待事件,可以看到log file sync等待排名第一,而其他等待事件很少。因此主要是log filesync等待事件发了超时:

select inst_id, event, count(1)

from gv$active_session_history

where sample_time >=

to_date('2020-01-16 01:50:00', 'yyyy-mm-dd hh24:mi:ss')

and sample_time <

to_date('2020-01-16 01:58:00', 'yyyy-mm-dd hh24:mi:ss')

and event is not null

group by inst_id, event

order by 1, 3 desc;

223844286ccff947ede85a4966370df6.png

3. 进一步查看lgwr 的 trace,但没有发现异常信息。

4. 继续查看log file sync等待信息,可以看到都是被同一条SQL的会话阻塞。该SQL对应的文本为insert into xxx……,是用于业务写日志的语句,体现在应用日志上就是卡在进程刚开始的时候超时的执行。

5. 由于告警日志和LGWR TRACE里都没有异常信息,于是我们可以查看那条SQL的执行情况,发现故障时点每次执行时间变长了。

e049961fe016367ac3921fbf41cca4ee.png

6. 继续查询故障时段log file sync、LGWR wait for redo copy等待事件直方图信息。从这条insert sql执行历史信息,调用次数并没有突增的情况,但是log filesync/LGWR wait for redo copy等待抖动比较严重:

0eaa453982e68447adcc02c689e2b226.png
dd88c079fc44c255a097f921a42861d9.png
06bb3bc26e2ab76dcb1f7a8fe61f9a59.png

根据故障处理经验来判断,LGWR抖动比较严重,怀疑物理IO出现了问题。

7. 分析排查物理IO问题,IO没看到异常情况,所以在这里排除了IO引起的日志写入抖动的问题。

8. 查询故障时段SQL占用CPU排名的情况

10c5ba9a87061763bde6ce81b233e9c1.png

而该sql_id的sql_text则是:

0b9d7f7f37b44c2c07ec058014dd1363.png

对故障时间点的ASH报告进行分析,故障时间点这个select 1 from dual占用的cpu最高,这个sql一般是weblogic等中间件测试连接池连接用的,一般不会引起CPU的使用问题,且总体CPU使用率并没有撑满。故在这里可以排除CPU使用影响的情况,由于这套数据库平时内存的使用率就是98%左右,只剩2G空闲内存,而故障时点,只剩几百兆内存。

因此,分析到这里基本可以定位是内存消耗过高引起的问题,这里考虑到触发故障的时间点有高度规律性,于是考虑可能是由于一些定时任务引起的,于是检查了crontab,job定时任务、备份等,但都没发现有故障时间的运行的信息。

这个时候考虑数据库主机层面上定时任务和进程分析一些信息,由于以前出现故障的时候,有让客户开启oswatch采集,故这次也同样从osw中top的采样时间进行检查,且最终发现在异常时osw的采样时间也变长了,说明故障出现的时候整个操作系统都有受影响。

9. 查看osw中ps的信息

将osw采样的时间加大到42秒的和正常15秒内的两个时间进行比对,可以发现故障出现的事件点内,多出来的一个进程是CVU的JAVA进程。故怀疑是cvu的java进程对主机的内存造成了大量的消耗。

查看cvu的运行日志,可以看到cvu是6小时执行一次,而在1:56和13:56的时候主机确实都运行了这个进程。当然,cvu服务停用并不影响数据库实例正常使用,只是在运行cluvfy时有调用到,而在01:56:25~01:57:07这个中间系统中是卡着的,且内存的free一直减少。

3700d63751b6f5d5d87bc54abf2caa82.png

从vmstat上看,也验证了异常时主要是内存问题,交换空间页面切换和系统调用次数也在加大。

0515339335635606e4fd6e351c4dc84d.png

综合以上的分析,可以确认是cvu定时调用导致内存消耗过大,而内存本身就不足,在调用的那一瞬间引起了数据库主机内存抖动,引起了数据库主机的卡顿,临时处理方法是停止cvu服务,在之后的跟踪中没有发现同样的故障发生,故障处理完成。

cvu定时任务是集群软件调用cvu工具定时检查集群运行状态,记录到日志文件中的。它的运行导致现有服务器内存资源过于紧张,导致几乎所有进程都变慢。

问题解决


本次案例出现的主要原因是由于cvu定时任务进程的调用导致现有服务器内存资源过于紧张,引起了数据库主机内存抖动,造成数据库卡顿。临时处理方法是停止cvu服务,在之后的跟踪中没有发现同样的故障发生,故障处理完成。

想了解更多关于数据库、云技术的内容吗?

快来关注“数据和云"、"云和恩墨,"公众号及"云和恩墨"官方网站,我们期待大家一同学习与进步!

cd0d466d8b44970b2906109f1f6cd506.png

小程序”DBASK“在线问答,随时解惑,欢迎了解和关注!

c3860321d7b9156d9f3c69f214329893.png

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

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

相关文章

mysql 字符串匹配函数_mysql 自定义函数 实现字符串匹配

先来一个截图&#xff1a;fSearch函数的第一个参数为单一字符串(即 没有特殊字符串隔开)fSearch函数的第一个参数非单一字符串多个字符串同样可以匹配。函数代码&#xff1a;DELIMITER $$Create function fSearch(targetStr VARCHAR(100),findStr VARCHAR(100)) RETURNS INTBEG…

stm32时钟树_先学STM8,还是学STM32?

有朋友问&#xff1a;我学习过51&#xff0c;接下来我是先学习STM8&#xff0c;还是STM32呢&#xff1f;物联网STM32入门 - 直播课程 - 创客学院​www.makeru.com.cn嵌入式开发直播课 - STM32 USART串口的应用 - 创客学院直播室​www.makeru.com.cn1、写在前面想要明白这个问题…

如何使用django显示一张图片

django显示图片对新手来说真的算是一个坑。。 这里记录下小白爬坑的历程。 首先&#xff0c;你需要一个可以运行的django服务器&#xff0c;能显示正常的html文本&#xff0c;无法显示图片 这是html的文本&#xff0c;可以显示文字&#xff0c;无法显示图片 <h1>An Image…

mysql创建时间字段6_mysql 时间字段介绍

mysql时间类型大概有5种&#xff0c;如下图1、创建数据库create table t1 (id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,d1_data date,d2_time time,d3_datatime datetime,d4_year year,d5_timestamp TIMESTAMP);字符串方式插入INSERT INTO t1 (d1_data,d2_time,d3_datati…

安装Python 3.6 在Ubuntu 16.04 LTS 版本

在ubuntu 16.04版本中&#xff0c;系统默认安装 了python 2.7和3.5版本&#xff0c;因为系统本身用到python的程序&#xff0c;删除默认的版本又担心系统有问题&#xff0c;那有没有办法同时在安装和使用python 3.6版本呢&#xff1f;下文将一起安装python 3.6并修改原系统的py…

matlab动画_弹簧振子振动的matlab动画演示

用Matlab阐述物理中的胡克定律&#xff0c;为弹簧振子震动的matlab动画示意图&#xff0c;另有一个为不同质量不同弹簧系数的比较。spring.m,compare.mrectangle(position,[12,8.5,2,0.3],FaceColor,[0.5,0.3,0.4]); axis([0,15,-1,10]); hold on plot([13,13],[7,8.5],r,li…

svn合并分支到主干_谈谈代码分支管理

前言从2019年上半年云音乐的客户端团队开始迁移到双周迭代后&#xff0c;随之而来的是我们需要重新调整代码分支的管理方法&#xff0c;来应对开发流程的变更。双周迭代顾名思义一周开发一周测试&#xff0c;目的就是为了快速交付。纵观整个开发流程&#xff0c;我们需要在两周…

ctf实验平台-成绩单

题目链接&#xff1a;http://120.24.86.145:8002/chengjidan/ 平台地址&#xff1a;http://123.206.31.85/ 第一步&#xff1a;暴库 id-1 union select 1,2,3,group_concat(schema_name) from information_schema.schemata# 第二步&#xff1a;爆表 id-1 union select 1,2,3,ta…

python 扫描仪_玩《Minecraft我的世界》学python编程,可领|取电子学习版本

为何选择学习pythonpython是一种解释型、面向对象、动态数据类型的高级程序设计语言&#xff0c;它具有丰富和强大的库&#xff0c;能够把其它语言&#xff08;尤其是c&#xff09;制作的各种模块很轻松地联结在一起。pyton在编程语言排行榜中高居首位。[求抱抱]编程听起来很高…

vue中使用导出表格功能

1.下载依赖 npm install -S file-saver xlsxnpm install -D script-loader 2.在src下创建vendor文件夹&#xff0c;并在文件夹中放两个文件 Blob.js (function (view) {"use strict";view.URL view.URL || view.webkitURL;if (view.Blob && view.URL) {try …

adb shell 书籍_开发必备---你应该知道的一些 ADB 命令

版权声明&#xff1a;本文为LooperJing原创文章&#xff0c;转载请注明出处&#xff01;一、设备相关1、adb devices显示连接到计算机的设备List of devices attachedbe34d81e device输出格式为 [serialNumber] [state]&#xff0c;state 有如下几种&#xff1a;列名解释nodevi…

python生成器迭代_二十、深入Python迭代器和生成器

「Author&#xff1a;Runsen」学习python的过程中&#xff0c;迭代器与生成器是绕不开的话题&#xff0c; 什么是迭代器和生成器呢&#xff1f;下面我们来了解一下什么是迭代。但在了解迭代器之前&#xff0c;首先需要知道什么是容器。容器正所谓&#xff1a;一切都是对象&…

批改网禁止粘贴怎么破_重大利好!教育部声明,要求家长批改作业等行为,发现一起严处一起...

前段时间&#xff0c;在江苏一位家长发布短视频&#xff0c;他在视频中怒喊&#xff1a;我就退出家长群怎么了&#xff01;引起网上一阵热议起因是这位家长认为老师总是让家长帮忙批改作业&#xff0c;自己承担了太多教师应负的责任&#xff0c;完了还要昧着良心说老师你辛苦了…

mysql实验步骤_MySQL双方配置实验步骤

实验环境&#xff1a;两台MariaDB服务器&#xff0c;IP分别为&#xff1a; 172.16.2.16 和 172.16.2.17MariaDB的版本是5.5.36&#xff0c;使用二进制方式安装。已安装完成。/mydata/data 数据库文件存放目录/mydata/binlog/ 二进制日志文件存放位置/mydata/relaylog/ 中继日志…

mac 系统安装 eclipse 方法

经过好几天的折腾&#xff0c;终于在各种不靠谱的经验、说明的忽悠中把自己心爱的 mac 安装上了 eclipse&#xff0c;看到别人的不靠谱&#xff0c;我决定自己写一篇经验&#xff0c;为了大家能够不走我这么多的弯路&#xff0c;也为了自己将来可以回来看看&#xff0c;下次安装…

python自动化和教程_《手把手教你》系列练习篇之2-python+ selenium自动化测试(详细教程)...

1. 简介今天我们还是继续练习练习基本功&#xff0c;各位小伙伴要耐住住性子&#xff0c;要耐得住寂寞啊&#xff0c;不要急躁&#xff0c;后面你会感谢你在前边的不断练习的。到后面也是检验你前边的学习成果的一次很好实践。本文介绍如何通过link text、partial link text、c…

异常在哪一层处理_WiFi速度慢,信号不稳定,除了重启路由器外,自己能怎么处理?...

前言WiFi出了故障&#xff0c;速度慢&#xff0c;信号不稳定&#xff0c;自己处理&#xff0c;除了重启路由器&#xff0c;也没有什么别的招了&#xff1b;好在这万能重启&#xff0c;差不多能解决一大半的小故障&#xff1b;那信号不好&#xff0c;速度慢&#xff0c;不稳定&a…

linux运维、架构之路-HAProxy反向代理

一、HAProxy介绍 专业反向代理,支持双机热备支持虚拟主机,配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端节点出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入&#xff0c;基于TCP和HTTP应用的代理软件&#xff0c;开源免费、快速并且可靠的…

CSS3 3D transform变换

transform的坐标是需要了解的特性。 我们的rotateX,rotateY,rotateZ,和translateX,translateY等都是基于相同的坐标系来定位的。 3D的坐标如下入所示&#xff1a; 3D transform中有下面这三个方法&#xff1a; rotateX( angle )rotateY( angle )rotateZ( angle )理解了这三个方…

vba结束本次循环进行下次_VBA掌握循环结构,包你效率提高500倍

这是系列免费教程《Excel VBA&#xff1a;办公自动化》&#xff0c;还是老规矩&#xff0c;看看我们走到哪里了。1.认识VBA&#xff1a;什么是VBA&#xff1f;2.这些掌握了&#xff0c;你才敢说自己懂VBA3.VBA变量5年踩坑吐血精华总结4.VBA中重要的强制申明&#xff0c;谁看谁明…