告警解释
=======
此告警对应指标“动态内存使用率”超出配置阈值,此指标反映gaussdb进程动态内存使用率。
对系统的影响
此指标持续上涨,达到100%的值,语句执行会由于无内存报错。
可能原因
- 连接数增加,内存正常使用。
- 业务连接池机制设置不合理,数据库中留存过多的空闲连接。
- SQL模板、存储过程模板数量较多。
- 内存泄漏。
处理步骤
-
收到告警后,首先通过查看监控指标查看指标“动态内存使用率”,确认指标情况以及触发告警的组件。
- 确认此指标是否已达100%。
- 如果已达或超过90%仍持续上涨,优先查杀空闲会话达到降动态内存的目的。否则,执行2,进行分析。
-
确认是否由于业务增大并发导致。
通过查看监控指标查看“在线会话数”指标,是否有联动上涨。
- 是,则大概率和业务变动有关,需要及时知会业务风险。
- 否,执行3。
-
确认是否由于底层故障导致该节点处理能力下降。
-
通过告警组件登录系统库,执行如下语句:
select backend_start, query_start, state_change, state from pg_stat_activity where state = 'idle' and usename not like '%rds%';确认业务是否有长时间不使用的空闲连接并同步通过查看监控指标查看“活跃会话率”指标,如果业务有长时间不使用的空闲连接,且活跃会话率指标低于5%,考虑调整业务连接池参数,减少空闲连接。
确认业务是否有长时间不使用的空闲连接方法:backend_start与当前时间的间隔较长,且query_start和state_change时间距离当前大于1天。
-
通过告警组件登录系统库,查询如下语句:
-
分布式查询方式:
select contextname, sum(totalsize)/1024/1024 as total, sum(usedsize)/1024/1024 as used,count(*) as session_count from pv_session_memory_detail group by 1 order by 2 desc limit 20; -
集中式查询方式:
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;
根据查询结果,可以确认占用较多的内存上下文。
-
contextname:标识申请内存的上下文名称。
-
total:标识对应内存上下文总共申请的内存。
-
used:标识当前正在使用内存。
-
session_count:标识当前DN上session数量。
- 多次查询,如果contextname排在前五持续有如下三个值:CachedPlanQuery、CachedPlanSource、CachedPlan,基本上为SQL模板、存储过程模板数量较多场景,需要分析业务语句模板数量并建议业务降低JDBC连接串参数preparedStatementCacheQueries,减少缓存模板数,此带来的风险是业务调整时延可能受到影响,需要验证后再实施,且需要重新建立业务连接,建议联系技术支持协助评估。
- 多次查询如果session_count不变,contextname的值SessionCacheMemoryContext占用持续上涨则可能是内存泄漏,联系技术支持处理。
- 如果非上述两种情况,联系技术支持。
-
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…