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 数为 546SessionCacheMemoryContext 会话数偏高大量会话缓存占用内存。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_threshold64MB gs_guc reload -N all -I all -Z datanode -c local_syscache_threshold64MB 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 连接池是 maxActive100 建议值为业务峰值的最大并发数机器内存小于 64GB 的虚拟机建议不要超过 200。假设有三个业务公用一套数据库业务 A 的 maxActive 业务 B 的 maxActive 业务 c 的 maxActive 2007. 清理空闲会话配置完成后建议重启数据库如果业务不允许重启反馈业务需要清理 idle 进程业务同意后 登录数据库执行进行清理select pg_terminate_backend(pid) from pg_stat_activity where stateidle and usename gbase;8. 效果验证让业务连接使用 top 命令观察数据库内存使用变化问题解决。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2589941.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!