写点什么

YashanDB|修改 yac 参数后执行 shutdown immediate 数据库卡住的原因和解决办法

作者:数据库砖家
  • 2025-04-21
    广东
  • 本文字数:785 字

    阅读完需:约 3 分钟

【问题分类】

性能优化、数据库运维

【关键词】

YashanDB、yac、shutdown immediate、hang 死、SHM_POOL_SIZE

一、问题描述

客户反馈在修改了 YashanDB 的共享集群(yac)相关参数后,执行数据库关闭操作(shutdown immediate)时,出现了长时间的 hang 死现象,数据库无法正常关闭。

二、原因分析

经过详细排查,发现 shutdown 过程中出现以下情况:

shutdown 操作执行过程中,内部线程卡在了获取信号量 gInstance->trigger->sema 这一环节;

正常情况下,该信号量由数据库主线程(main 线程)在执行 shutdownWait()方法时释放;

但本次卡住的根本原因在于主线程执行 SERVER_CMD_SHUTDOWN 命令时,调用了 jobManagerStop();

而 jobManagerStop()又受阻于 doUpdateSysJob 线程调用的 checkRedoFreeSpace()接口;

最终导致了内部线程等待资源释放,形成死循环;

核心原因是:SHM_POOL_SIZE 参数设置过小,共享内存不足,影响了 archProc 模块的日志文件创建,进而影响了 redo 日志空间使用。

简单来说,就是因为配置的共享内存(SHM_POOL_SIZE)过小,导致 shutdown 时无法正常释放资源,造成数据库 hang 死。

三、如何解决?

方法一:调整共享内存参数 在配置文件中增加 SHM_POOL_SIZE 的值,具体大小可根据实际环境与业务负载确定,确保内存充足:

SHM_POOL_SIZE = (合理值,建议大于当前值)
复制代码

方法二:检查并优化其他关联参数 除了 SHM_POOL_SIZE 外,建议同时检查与内存和日志管理相关的其他参数设置,确保整体资源分配合理、充足。

四、影响范围

该问题已确认影响的 YashanDB 版本范围:23.1 ~ 23.1.1.200

目前官方未明确修复版本,建议用户在上述版本范围内谨慎调整 SHM_POOL_SIZE 参数,以避免再次出现类似问题。

五、日常运维经验总结

调整 YashanDB 参数,尤其是共享集群(yac)参数时,应谨慎评估资源影响;

建议定期监控共享内存、日志空间使用情况,预先发现资源不足风险;

遇到 shutdown 或启动 hang 住现象时,可优先检查内存、磁盘空间、日志文件使用等资源情况。

用户头像

还未添加个人签名 2025-04-09 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB|修改yac参数后执行shutdown immediate数据库卡住的原因和解决办法_数据库_数据库砖家_InfoQ写作社区