写点什么

【YashanDB 知识库】EXP 导致主机卡死问题

作者:YashanDB
  • 2024-07-23
    广东
  • 本文字数:1221 字

    阅读完需:约 4 分钟

问题现象

问题单: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 -add if=/dev/zero of=/swap bs=1M count=30720mkswap /swapchmod 600 /swapswapon /swapsysctl -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/profilesource /etc/profilemkdir -p /data/corefilechmod 777 /data/corefile/echo "/data/corefile/core-%e-%p-%t" >> /proc/sys/kernel/core_patternecho "kernel.core_pattern=/data/corefile/core-%e-%p-%t" >> /etc/sysctl.confsysctl -p /etc/sysctl.conf
复制代码

经验总结

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

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

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】EXP导致主机卡死问题_yashandb_YashanDB_InfoQ写作社区