当前位置: 首页 > backend >正文

【达梦数据库】OOM问题排查思路

目录

  • 背景
  • 问题1:DM线程导致OOM
    • 问题现象
    • 排查思路
      • 1、查看数据库日志
      • 2、查看数据库参数是否合理
        • 内存参数
        • 会话参数
      • 3、查看Core文件是否生成
      • 4、特殊情况
  • 问题2:非DM线程导致OOM

背景

近期遇到很多OOM的问题,一部分是数据库申请内存过大导致OOM,另一部分是因为系统本身OOM,做以下总结。

问题1:DM线程导致OOM

问题现象

数据库服务异常停止。linux下,查看系统日志/var/log/messages,查找oom-killer关键字,定位到DM线程导致OOM

vim /var/log/messages

在这里插入图片描述

排查思路

1、查看数据库日志

日志目录下查看log日志:

 vim /home/dmdba/dmdbms/log/dm_DMDB_202506.log

无ERROR、FATAL,且对应时间点日志未报错。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、查看数据库参数是否合理

内存参数

查看dm.ini文件中,内存参数是否合理。

vim /dmdata/DAMENG/dm.ini

在这里插入图片描述
通常来说,如果全部内存的80%给到数据库使用,BUFFER差不多是总内存的1/3(如果比例更低,BUFFER也会相应的更低,可以灵活调节),以下是根据自动优化脚本计算出的参数的推荐值:
在这里插入图片描述

会话参数

查看dm.ini文件中,会话参数MAX_SESSIONS是否合理。

vim /dmdata/DAMENG/dm.ini

在这里插入图片描述
会话会占用内存,过多的会话容易导致OOM,如果V$SESSIONS视图中的会话数接近最大会话数MAX_SESSIONS,且远远大于优化脚本中的推荐值,那需要小心了,建议还是加大内存重新优化;

SELECT * FROM V$SESSIONS;

在这里插入图片描述
在这里插入图片描述

3、查看Core文件是否生成

查看Core文件配置路径

cat /etc/sysctl.conf

在这里插入图片描述查看生成的Core文件

ll /dmdata/

在这里插入图片描述
如果有Core文件产生,可以通过gdb工具分析Core文件,并获取到异常SQL,进行复现。相关操作请参考链接: 【达梦数据库】Coredump文件生成与分析

4、特殊情况

若以上情况都没有问题,即日志不产生报错、参数配置合理、未产生Core文件
,可以限制一下会话数的问题大小,待应用运行后如果占用大内存的SQL会报错,这样可以反向定位到问题SQL。

--动态参数
SP_SET_PARA_VALUE(1,'MAX_SESSION_MEMORY',2048);
--静态单数
SP_SET_PARA_VALUE(1,'MAX_HEAP_SIZE',2048);

问题2:非DM线程导致OOM

在这里插入图片描述
可以根据DM线程导致OOM的思路排查一下:

  • 如果数据库日志中对应时间点日志未报错,大概率不是数据库的问题,需要服务器厂商排查一下。
http://www.xdnf.cn/news/12184.html

相关文章:

  • React 新项目
  • OGG-01635 OGG-15149 centos服务器远程抽取AIX oracle11.2.0.4版本
  • Spring框架学习day7--SpringWeb学习(概念与搭建配置)
  • Eureka REST 相关接口
  • 云原生思维重塑数字化基座:从理念到实践的深度剖析
  • Python基于蒙特卡罗方法实现投资组合风险管理的VaR与ES模型项目实战
  • Django CMS 的 Demo
  • 每日算法 -【Swift 算法】三数之和最接近目标值
  • Golang——9、反射和文件操作
  • Redis:介绍和认识,通用命令,数据类型和内部编码,单线程模型
  • 深入浅出玩转物联网时间同步:基于BC260Y的NTP实验与嵌入式仿真教学革命
  • 从《现实不似你所见》探寻与缘起性空的思想交织
  • MySQL间隙锁入手,拿下间隙锁面试与实操
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: TTask创建多线程, 更简单, 更快捷.
  • 报告精读:“数据银行”概念模型与建设规划研究报告【附全文阅读】
  • JavaSec-SSTI - 模板引擎注入
  • 【ArcGIS应用】ArcGIS‌应用如何进行影像分类?
  • adb 连不上真机设备问题汇总
  • ros2--图像/image
  • halcon c# 自带examples报错 Matching
  • JVM中的各类引用
  • 设计模式域——软件设计模式全集
  • GIC流协议接口
  • android 之 Tombstone
  • 巴科斯-诺尔范式与抽象语法树:CMake语法实例教程
  • 深入学习RabbitMQ队列的知识
  • RabbitMQ实用技巧
  • 18650锂电池组点焊机:高效组装锂电池的关键工具|比斯特自动化
  • c++ openssl 使用 DES(数据加密标准)进行加密和解密的基本操作
  • ​减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。