yuan-er

导航

 

ALM-5101263 Ops巡检-动态内存使用率异常

告警解释

此告警对应指标“动态内存使用率”超出配置阈值,此指标反映gaussdb进程动态内存使用率。

告警属性

告警ID

告警级别

告警类型

告警归属

业务类型

是否可自动清除

5101263

巡检配置

物理资源告警

租户面

云数据库 GaussDB 节点

告警参数

类别

参数名称

参数含义

定位信息

云服务

产生告警的云服务

实例ID

产生告警的实例ID

节点ID

产生告警的节点ID

巡检名称

产生告警的巡检名称

指标编码

产生告警的指标编码

附加信息

租户名称

产生告警的租户名称

实例名称

产生告警的实例名称

租户ID

产生告警的租户ID

云服务

产生告警的云服务

服务

产生告警的服务

微服务

产生告警的微服务

告警源IP

告警源IP

节点角色

产生告警节点的节点角色

指标编码

产生告警节点的指标编码

指标采集值

产生告警节点的指标采集值

指标阈值

产生告警节点的指标阈值

对系统的影响

此指标持续上涨,达到100%的值,语句执行会由于无内存报错。

可能原因

  • 连接数增加,内存正常使用。
  • 业务连接池机制设置不合理,数据库中留存过多的空闲连接。
  • SQL模板、存储过程模板数量较多。
  • 内存泄漏。

处理步骤

  1. 收到告警后,首先通过查看监控指标查看指标“动态内存使用率”,确认指标情况以及触发告警的组件。

     

    • 确认此指标是否已达100%。
    • 如果已达或超过90%仍持续上涨,优先查杀空闲会话达到降动态内存的目的。否则,执行2,进行分析。

     

  2. 确认是否由于业务增大并发导致。

     

    通过查看监控指标查看“在线会话数”指标,是否有联动上涨。

    • 是,则大概率和业务变动有关,需要及时知会业务风险。
    • 否,执行3

     

  3. 确认是否由于底层故障导致该节点处理能力下降。

     

    1. 登录实例节点
    2. 执行如下命令查看cm_agent的日志:

      cd $GAUSSLOG/cm/cm_agent

    3. 查看告警时间点周围日志中是否有ping失败的ERROR日志。
      • 如果存在,说明是网络断连导致,联系技术支持处理网络。
      • 如果没有,查看告警时间左右,是否有其他故障告警

        如果有,按照对应告警的处理方式处理;否则需要对内存细节进行分析,执行4

     

  4. 通过告警组件登录系统库,执行如下语句:

     

    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天。

     

  5. 通过告警组件登录系统库,查询如下语句:

     

    • 分布式查询方式:
      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数量。
    1. 多次查询,如果contextname排在前五持续有如下三个值:CachedPlanQuery、CachedPlanSource、CachedPlan,基本上为SQL模板、存储过程模板数量较多场景,需要分析业务语句模板数量并建议业务降低JDBC连接串参数preparedStatementCacheQueries,减少缓存模板数,此带来的风险是业务调整时延可能受到影响,需要验证后再实施,且需要重新建立业务连接,建议联系技术支持协助评估。
    2. 多次查询如果session_count不变,contextname的值SessionCacheMemoryContext占用持续上涨则可能是内存泄漏,联系技术支持处理。
    3. 如果非上述两种情况,联系技术支持

     

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

不涉及。

 
posted on 2024-10-23 14:41  数据库笔记  阅读(16)  评论(0)    收藏  举报