如何避免云数据库 GaussDB节点内存使用率过高

124 阅读4分钟

告警解释

=======

系统每一分钟检查云数据库 GaussDB所有节点的内存使用率,当连续三次监测到内存使用率超过设置的阈值80%(默认)时,产生此告警。

对系统的影响

GaussDB节点内存使用率过高,可能导致实例节点不可用。

可能原因

  1. 某个辅助进程或常驻进程内存明显上涨导致机器内存使用率上涨,例如om_agent。
  2. 操作系统shared memory泄漏。
  3. gaussdb进程内存上涨,触发内存使用率超阈值(shared_memory不回收)。

处理步骤

  1. 使用浏览器,通过地址“https://

    ManageOne运维面主页的访问地址

    :31943”,登录ManageOne运维面,或通过地址“https://

    ManageOne主门户的访问地址

    ”,登录ManageOne主门户,选择“运维中心(OC)”,进入ManageOne运维面。

    • 密码方式:输入账号和密码。
      • 默认账号:bss_admin

        对于从8.2.0或更早版本升级上来的ManageOne,默认账号为admin。

      • 默认密码:参见《华为云Stack 8.3.1 账户一览表》的“A类(Portal)”页签中,“ManageOne运维面”账户对应的默认密码。

    • USB Key方式:插入已预置用户证书的USB Key,选择设备和用户证书,并输入PIN码。
  2. 在“告警 > 告警管理 > 当前告警”中查看集中告警,获取告警中的实例ID或者工作ID。

  3. 在ManageOne运维面右下角“常用链接”栏中单击“ServiceCM”,跳转到ServiceCM插件列表界面。

  4. 在ServiceCM插件列表界面,单击“自助开发平台 > dbs-ops”,进入DBS运维管理平台。

  5. 根据告警定位信息处获取的实例ID信息,在DBS运维管理平台搜索对应实例,进入实例详情页。

  6. 查看当前实例状态以及是否有备份或其他工作流在进行。

  7. 登录运营面,查看发生告警时间段近3小时内的关键指标情况。

    1. 使用浏览器,通过账号地址“https://域名”登录运营面。

    2. 在左上角菜单服务列表找到云数据库GaussDB,单击进入实例列表页面。

    3. 根据获取的实例ID和节点ID,查看对应实例、对应节点。

    4. 单击发生告警节点的“查看监控指标”按钮,查看节点指标监控。

    5. 在节点指标监控页面的右上角搜索框中输入指标的关键字“内存”,进行模糊查询。

    6. 观察是否有联动指标(“动态内存使用率”、“进程内存使用率”、“在线会话数”)然后取历史近2天的监控,查看是否历史上有相同的增长趋势。

      • 如果当前业务处于高峰期,结合业务情况判断是否需要扩容规格。
      • 如果非业务高峰期,则需要继续定位。
  8. 参考登录实例节点,登录发生告警的节点。

  9. 执行以下命令,查看进程占用情况。

    ps ux

    • 在除gaussdb进程外占用大量内存的进程,则可能某个辅助进程或常驻进程内存明显上涨导致机器内存使用率上涨,要确认此进程是否为辅助进程(例如om_agent等)或运维命令进程(如gs_roach、gs_redis等)。

    • 此进程为辅助进程,重启后会自动拉起对集群影响不大,要降低内存可以将此进程kill掉。

    • 此进程为运维命令进行,需要确认此进程占用大量内存是否符合预期,如果不符合预期,需要考虑终止进程。

  10. 执行以下命令,查看当前的shared memory大小。

**free -g**
执行以下命令,查看具体进程的shared memory。

**ipcs -m**

发现有的shared memory的nattach为0,说明此shared memory当前没有人使用,确认对应的进程是否仍然存在,如果不存在,则说明此shared memory残留,需要手动清理。

11. 最终可能的场景就是gaussdb进程占用内存较高,此时首先观察对应节点上CN的OPS监控,确认“在线会话数”是否有明显上涨,然后查看DN的OPS监控,确认“动态内存使用率、进程内存使用率”是否有明显变化。 12. 如果以上操作均无法解决此告警,联系技术支持进行处理。

告警清除

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

参考信息

不涉及

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…