问题现象

问题单: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. FSCTF 2023(公开赛道)WP

    FSCTF 2023 ID:Mar10 Rank:6 总结:下次看到不正常报错一定重新安装一遍工具~~ web 源码!启动! 就在源码注释里 <!-- 师傅们,欢迎来到CTF的世界~ NSSCT ...

  2. null 和 undefined 的区别?

    null 表示一个对象被定义了,值为"空值":undefined 表示不存在这个值.(1)变量被声明了,但没有赋值时,就等于undefined. (2) 调用函数时,应该提供的参数 ...

  3. application.properties数据库连接字符串

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://loca ...

  4. Spring AOP面向切面编程核心概念

    横切关注点 对那些方法进行拦截,拦截后怎么处理,这些就叫横切关注点 比如:权限认证.日志.事务 通知 Advice 在特定的切入点上执行的增强处理,有5种通知 用途:记录日志.控制事务.提前编写好通用 ...

  5. SpringBoot2.X新版本配置拦截器在项目中的使用

    拦截器:和过滤器用途基本类似 SpringBoot2.X新版本配置拦截器 implements WebMvcConfigure 自定义拦截器 HandlerInterceptor preHandle: ...

  6. 利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功

    在之前的文章中,我们详细介绍了 SpringBoot 整合 mail 实现各类邮件的自动推送服务. 但是这类服务通常不稳定,当出现网络异常的时候,会导致邮件推送失败. 本篇文章将介绍另一种高可靠的服务 ...

  7. springboot实现异步调用demo

    springboot实现异步调用 异步调用特点 异步调用在开发程序中被广泛应用,在异步任务中,主线程不需要阻塞等待异步任务的完成,而是可以继续处理其他请求. 异步调用的特点如下: 非阻塞:主线程在调用 ...

  8. 【微信小程序】 侧边栏菜单查询

    原因 开发的项目在WX小程序上有个新需求 就是在用户[我的]界面里的菜单中多加一个[我的服务] 之前有提及过,服务消息被按8个消息类型拆成了8张表 对应,在小程序界面这里也应该放上对应8个菜单,按菜单 ...

  9. 【SVN】属性功能配置

    一.配置SVN提交模板 更改SVN提交信息模板 (参考源博客): https://www.cnblogs.com/fairylyl/p/10505833.html 右键属性配置: 新建一项属性,选择[ ...

  10. 【Java】树状节点结构的数据

    数据库的菜单,权限表是具有多层级结构,有ID和PARENT_ID两个关键性的字段 通过PARENT_ID和ID相等构建层级结构: 然后需要在Java中构建出层级的数据结构,然后输出成JSON返回给前端 ...