当前位置: 首页 > news >正文

GBase 8c数据库idle会话占用内存过高故障处理指南

本文档针对南大通用 GBase 8c 数据库在运行过程中,因连接池配置不合理、大量 idle 空闲会话导致内存占用过高、服务器内存耗尽的典型问题,提供完整的排查思路、定位方法与标准化处理步骤,分布式数据库和集中式数据库场景均适用。

1. 检查当前机器内存使用状态

当业务报错ERROR: memory is temporarily unavailable:dn,可按以下步骤排查与处理。

先使用ps aux --sort=-%mem | head -n 10查看占用内存最多的 10 个进程。

2. 检查数据库内存使用详情

若数据库进程占用过高,使用gsql -d postgres -p 15400 -r登录数据库执行:

select * from pg_total_memory_detail ;

3. 统计内存占用最高的前 20 个上下文(contextname)

执行以下 SQL,查看内存占用分布:

select contextname, sum(totalsize)/1024/1024 as total, sum(usedsize)/1024/1024 as used,count(*) as session_count from gs_session_memory_detail group by 1 order by 2 desc limit 20;


查看 SessionCacheMemoryContext 的 Session 数为 546,SessionCacheMemoryContext 会话数偏高,大量会话缓存占用内存。

4. 查看数据库会话状态分布

执行以下 SQL,统计活跃、空闲等会话数量:

SELECT COUNT(CASE WHEN state = 'active' THEN 1 END) AS active_connections, COUNT(CASE WHEN state = 'idle' THEN 1 END) AS idle_connections, COUNT(CASE WHEN state = 'idle in transaction' THEN 1 END) AS idle_in_transaction_connections, COUNT(CASE WHEN state = 'waiting' THEN 1 END) AS waiting_connections FROM pg_stat_activity;


经排查,发现基本全是 idle 状态的会话消耗的内存。

5. 数据库侧建议根据实际内存调整

gsql -d postgres -p 15400 -r -c "show global_syscache_threshold;" gsql -d postgres -p 15400 -r -c "show local_syscache_threshold;" gs_guc reload -N all -I all -Z datanode -c "global_syscache_threshold='64MB'" gs_guc reload -N all -I all -Z datanode -c "local_syscache_threshold='64MB'" gsql -d postgres -p 15400 -r -c "select pg_reload_conf();" gsql -d postgres -p 15400 -r -c "show global_syscache_threshold;" gsql -d postgres -p 15400 -r -c "show local_syscache_threshold;"

6. 业务侧需要降低连接池的最大连接数

业务连接池总连接数不宜过高,所有业务的连接池参数总计不要超过 200。

Druid 连接池是 maxActive=100 ,建议值为业务峰值的最大并发数,(机器内存小于 64GB 的虚拟机建议不要超过 200)。

假设有三个业务公用一套数据库

业务 A 的 maxActive + 业务 B 的 maxActive + 业务 c 的 maxActive < 200

7. 清理空闲会话

配置完成后,建议重启数据库,如果业务不允许重启,反馈业务需要清理 idle 进程,业务同意后 ,登录数据库执行,进行清理:

select pg_terminate_backend(pid) from pg_stat_activity where state='idle' and usename<> 'gbase';

8. 效果验证

让业务连接,使用 top 命令观察数据库内存使用变化,问题解决。

http://www.jsqmd.com/news/767041/

相关文章:

  • 【Games101】如何将屏幕坐标的重心坐标矫正至观察空间-公式推导
  • 从‘看到’到‘理解’:拆解Grounded-SAM如何让计算机视觉模型听懂人话
  • yuque-exporter技术深度解析:语雀文档批量导出架构设计与实现原理
  • HPM SDK深度解析:从RISC-V MCU开发到嵌入式系统实践
  • 纯前端实现个性化鼠标指针:从CSS cursor属性到30+主题库实战
  • 2026年伺服码垛机公司推荐指南,码垛机/低位码垛机/机器人码垛机/坐标式码垛机 - 品牌策略师
  • 研究人工智能,何以落于上古汉语同源词意义系统
  • 别光看FPS了!用thop和PyTorch Event给你的模型做个‘全身体检’(附完整代码)
  • LeetCode 最大栈题解
  • 2026年拉萨砂浆采购指南:如何甄选靠谱的本土优质厂家? - 2026年企业推荐榜
  • 基于完美信息蒸馏的斗地主AI技术突破:PerfectDou架构设计与实战部署
  • 5分钟快速解锁Windows远程桌面限制:RDP Wrapper完全指南
  • LLAMA 配置AI大模型参数 --temp、--top-p、--top-k
  • 基于GitHub Actions自动化构建团队技能矩阵:从原理到实战部署
  • 从混乱到专业:5分钟用LaTeX的booktabs和multirow打造期刊级三线表与复杂表格
  • 轻量级进程守护工具 openclaw-keep-alive 实战指南
  • 2026年番禺铭悦玉府全屋定制专业服务商如何选型指南
  • 从VGG、ResNet到DenseNet:在FER2013上跑个分,聊聊我为什么最终选了它
  • 【Docker 27低代码容器化实战手册】:27个生产级部署技巧,零基础3天上线首个低代码应用
  • 【Docker监控黄金法则】:20年运维专家亲授7大必监指标与实时告警配置实战
  • 动态容量MoE框架实现语音与音乐统一生成
  • 如何快速连接魔兽世界自定义服务器:Arctium启动器完全指南
  • 毕业季不熬夜:用百考通AI轻松搞定本科毕业论文
  • 仅花几十元用一年|2026 实测智在记录 AI 会议纪要,每月省 20 + 小时,年省上千块
  • 从‘拖拉机油门’到平稳控制:在Python/Matlab里仿真PID积分饱和与抗饱和设计
  • TInyML基础:“不用死记公式!一文讲透全连接层:它到底把神经网络‘连’成了什么样?”
  • 农业物联网插件安全审计必做清单,VSCode 2026新增SAST扫描模块深度解析(仅限前500名下载CVE-2026-Agri补丁)
  • LeetCode 基本计算器题解
  • 如何实现Cursor Pro永久免费使用:完整技术指南
  • 凿岩机械臂力传感与运动控制轨迹规划【附代码】