问题现象

问题单:exp导出全库1主2备主节点执行,DMP文件30G左右系统卡死,发生主备切换

现象:

  • exp sys/Cod-2022 file=bim20240402.dmp full=y 服务器卡死,ssh连接不上服务器。

  • 等待一两个小时后,可以重新连接上。

  • 备用节点升主正常,查看run.log,心跳发送不到主节点。

  • 重连后,yasdb不在,查看run.log没有问题。未生成core文件,yasagent进程等正常。

问题风险及影响

不能exp数据,数据迁移失败

问题影响的版本

客户测试环境版本:23.1.4.101

问题发生原因

exp导出数据时,大量数据从磁盘放到data buff,导致实际使用内存增长,超过系统限定后,触发oom导致yasdb被杀。

问题分析和处理过程

分析:

  • 因为磁盘是nfs,初步怀疑是否是nfs导致网络问题。但换其它磁盘后,也出现同样问题。

  • 因为数据是从22.2.7.2使用exp导出,imp导入23.1。现在exp导出出问题,怀疑是否是兼容性问题。本地同样方式操作,未复现成功。pstack查看堆栈空间,gdb调试显示正常,也没有core文件生成。

  • 查看服务器message信息,发现yasdb都是被killed。怀疑是yasdb使用太多内存资源导致的问题,最终确认是这个原因。

查看服务器内存资源

free -h

查看yasd buff情况

测试

在10.34.70.91节点:

尝试如下:

● 开启swap空间为20G,DATA_BUFFER_SIZE由23528M 改到10240M

exp sys/Cod-2022 file=bim20240402.dmp full=y 导出成功,没有异常状态

● SWAP空间关闭。DATA_BUFFER_SIZE由23528M 改到10240M

exp sys/Cod-2022 file=bim20240402.dmp full=y 导出成功,没有异常状态

● 开启swap空间为40G。DATA_BUFFER_SIZE为23528M

exp sys/Cod-2022 file=bim20240402.dmp full=y 导出成功,没有异常状态

● swap不开,DATA_BUFFER_SIZE为23528M

exp sys/Cod-2022 file=bim20240402.dmp full=y 服务器卡死,直到yasdb被killed,才能重新连接上去

在10.34.70.78节点:

尝试如下:

● swap空间为30G,

exp sys/Cod-2022 file=bim20240402.dmp full=y 导出成功,没有异常状态

解决方法和规避

规避方法

有两种,可以单独配置,也可以两个同时做:

  • 开启swap空间
swapoff -a
dd if=/dev/zero of=/swap bs=1M count=30720
mkswap /swap
chmod 600 /swap
swapon /swap
sysctl -w vm.swappiness=60 永久开启swap:
vi /etc/fstab添加如下:
/swap swap swap defaults 0 0
  • 把DATA_BUFFER_SIZE调低,不要超过总内存的60%。
alter system set DATA_BUFFER_SIZE=xxx SCOPE=SPFILE;
  • core文件配置
echo "ulimit -c unlimited" >> /etc/profile
source /etc/profile
mkdir -p /data/corefile
chmod 777 /data/corefile/
echo "/data/corefile/core-%e-%p-%t" >> /proc/sys/kernel/core_pattern
echo "kernel.core_pattern=/data/corefile/core-%e-%p-%t" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf

经验总结

  • yasdb数据内存使用一般设定在系统的60%左右较好,data buff一般设置为yasdb内存的80%。

  • 遇上yasdb不存在了,但是没有生成core。很有可能就是被系统kill掉了,这时可以先去看/var/log/message信息,核实改问题。

【YashanDB知识库】EXP导致主机卡死问题的更多相关文章

  1. Runtime.getRuntime.exec()执行linux脚本导致程序卡死有关问题

    Runtime.getRuntime.exec()执行linux脚本导致程序卡死问题问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序被 ...

  2. 由于服务主机:DCOM服务进程占用过多CPU,导致系统卡死

    最近在使用电脑的时候,总是出现电脑死机,而且鼠标也是经常卡在那里不动了,开始以为是鼠标的问题,还换了个鼠标(飙泪中),这还是一个血的教训啊!!!之后打开任务管理器发现CPU占用已经达到100%,而且一 ...

  3. urllib2.urlopen超时未设置导致程序卡死

    没有设置timeout参数,结果在网络环境不好的情况下,时常出现read()方法没有任何反应的问题,程序卡死在read()方法里,搞了大半天,才找到问题,给urlopen加上timeout就ok了,设 ...

  4. 【转载】记一次因 Redis 使用不当导致应用卡死 bug 的排查及解决!

    说明:此篇文章 作者分析问题的思路很好,值得学习记录,原文转载自公众号. 首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象 刚开始当测试抱怨环境响应慢的时候 , ...

  5. STM32 HAL_Deleay() 函数 导致程序卡死

    出现问题场景:   我的程序有RTOS操作系统.使用的驱动库是STM32官方最新的HAL库. 移植好LwIP以太网协议后,在初始化网卡阶段程序卡死.   出现问题原因:   后经过蠢笨的printf打 ...

  6. 嵌套OOPS导致系统卡死 每个CPU都上报softlockup的问题

    问题现象:在ARM服务器上,构造oops异常,本应该产生panic,进入dump流程,并且系统重启,但是系统并未重启,而是出现了卡死,在串口会隔一段时间就循环打印调用栈信息.如下所示 linux-fA ...

  7. C#中多线程写DataGridView出现滚动条导致程序卡死(无响应)的解决办法

    因为写的程序涉及到多线程维护一个DataGridView,然后蛋疼的发现经常卡死...一开始以为是读写冲突的原因,然后就加了锁,问题依旧...然后发现每次出现滚动条的时候程序才会无响应,所以感觉应该是 ...

  8. APP导致界面卡死,iPhone卡死

    实测,是 Reachability 类创建实例过多导致 http://stackoverflow.com/questions/34063166/ios-9-app-freeze-with-consol ...

  9. Delphi主线程重入而导致程序卡死的解决方案

    Delphi的线程可以通过调用AThread.Synchronize(AProc),可以将Proc放入主线程中同步运行,此时AThread将挂起,直到主线程执行完AProc. 如果有BThread,调 ...

  10. c#中多线程写DataGridView出现滚动栏导致程序卡死(无响应)的解决的方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013529927/article/details/24225567 由于写的程序涉及到多线程维护一 ...

随机推荐

  1. ubuntu insight卸载

    最近需要进行gdb调试,但感觉gdb命令行方式不够直观,于是按照教程下载安装了insight,期间各种出错和bug,好不容易安装完成,却发现安装后的gdb版本变成了6.8-1,与gcc版本不兼容. 无 ...

  2. SSM配置文件分类及总结

    配置组件通常涉及以下几个方面 数据访问配置 配置数据源.JdbcTemplate.事务管理器等,以支持数据库操作. 服务层与DAO层配置 定义服务类和服务实现类.数据访问对象(DAO)的bean,以及 ...

  3. Quartus Ⅱ调用FIFO IP核方法实现求和(Mega Wizard)

    摘要:本次实验学习记录主题为"FIFO_IP核实现算术求和",主要内容是上位机通过串口向FPGA发送一定规格的数字矩阵,FPGA对矩阵处理,按规定逻辑实现求和运算,将结果返回串口转 ...

  4. 编程好帮手:通义灵码(TONGYI Lingma),是阿里云出品的一款基于通义大模型的智能编码辅助工具

    通义灵码(TONGYI Lingma),是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写.自然语言生成代码.单元测试生成.代码注释生成.代码解释.研发智能问答.异常报错排查 ...

  5. 动态分配内存new和delete

    #include<iostream> /* 动态分配内存用new关键字,语法:new 变量类型(初始值) C++11支持{} new int(5) ---- 申请了一个整型内存,并赋初值为 ...

  6. my-http-server 静态服务器源码学习实现缓存及压缩

    目录 一.准备工作及流程说明 二.配置命令行 三.设置入口文件和渲染模板 四.my-http-server源码 一.准备工作及流程说明 一看这标题,大家可能一下子没有反应过来,到底是要干什么?那么就先 ...

  7. oeasy教您玩转vim - 72 - # 缩写abbreviation

    ​ 缩写abbreviation 回忆上次折叠的细节 这次了解到了:mkview.:loadview 保存和加载视图 可以把当前的状态保存下来 可以在 viewoption 中配置保存选项,设置哪些需 ...

  8. vue8小时带刻度的时间轴,根据当前时间实时定位

    效果图: 需求: 1 开始时间.结束时间可配置2 时差固定8小时3 根据当前时间初始化位置4 每隔5s刷新位置5 超过结束时间停止刷新 HTML: <div class="time-a ...

  9. Scratch植物大战僵尸全套素材包免费下载

    scratch植物大战僵尸全套素材包,包含227个丰富多样的素材,涵盖角色.背景.动态gif.为Scratch创作者提供丰富资源,助力创作精彩作品. 免费下载地址:www.xiaohujing.com ...

  10. 如何在Arch Linux上构建Raspberry Pi虚拟环境

    如何在Linux上构建Raspberry Pi虚拟环境 ​ 下面我们来讲讲如何使用QEMU来仿照树莓派环境.这里首先先分成两大类.第一类是跑比较老的,安全性较低的老树莓派,主要指代的是22年4月份发布 ...