【YashanDB 知识库】EXP 导致主机卡死问题
问题现象
问题单: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 空间
把 DATA_BUFFER_SIZE 调低,不要超过总内存的 60%。
core 文件配置
经验总结
yasdb 数据内存使用一般设定在系统的 60%左右较好,data buff 一般设置为 yasdb 内存的 80%。
遇上 yasdb 不存在了,但是没有生成 core。很有可能就是被系统 kill 掉了,这时可以先去看/var/log/message 信息,核实改问题。
评论