• 首页 > 
  • 应急预案:专有云环境中盘古Master内存溢出的应急处理方法

应急预案:专有云环境中盘古Master内存溢出的应急处理方法

KB: 207496

 · 

更新时间:2021-03-12 17:14

1. 概述

本文主要介绍在专有云环境中,盘古Master内存溢出的应急处理方法。

1.1. 适用范围

  • 专有云V2,盘古
  • 专有云V3,盘古

1.2. 用户告知

  • 适用平台:x86
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:临时、固化
  • 操作复杂度:中
  • 预估执行时长:6小时
  • 业务影响:否
    说明:盘古服务已经不可用,恢复盘古Master状态。
  • 风险等级:中

2. 问题描述

盘古命令不可用,盘古Master不断反复重启,由于文件数和Chunk数过多,造成pangu_master内存溢出(OOM),超过限制会被CGroup结束掉。

3. 解决方案

3.1. 环境检查

检查盘古服务,操作如下:

  1. 登录集群AG,切换到admin用户,依次执行以下命令,确认盘古服务已经不正常。
    puadmin gss
    puadmin gems
    系统显示类似如下。
  2. 执行以下命令,检查pangu_master进程是否存在或者反复重启。
    ps -ef | grep pangu_master
  3. 执行以下命令,查看盘古Master的messages日志,确认存在pangu_master进程被kill命令强制结束的信息。
    sudo grep -i killed /var/log/messages
    系统显示类似如下。
  4. 执行以下命令,记录CPT压缩的间隔时间。
    puadmin flag -get pangu_LogCheckpointCheckInterval
    系统显示类似如下。
  5. 执行以下命令,记录pangu_LogSizeForCheckpoint的大小,日志条数。
    puadmin flag -get pangu_LogSizeForCheckpoint
    系统显示类似如下。

3.2. 实施步骤

暂时停止CPT压缩

  1. 登录集群AG,执行以下命令,修改pangu_LogCheckpointCheckInterval的值。
    puadmin flag -set pangu_LogCheckpointCheckInterval 2147483647
    系统显示类似如下。
  2. 执行以下命令,修改pangu_LogSizeForCheckpoint的值。
    puadmin flag -set pangu_LogSizeForCheckpoint 2147483647
    系统显示类似如下。

临时扩容盘古Master内存

以下扩容操作属于临时扩容,后续需要通过盘古通用扩容方案进行固化。

  1. 登录盘古Master所在的宿主机,执行以下命令,检查是否有资源扩容。
    free -g
    系统显示类似如下。
  2. 执行以下命令,临时扩容内存。
    docker update --memory [$Mem] [$VM]
    说明
    • [$Mem]为扩容的内存,请按时间情况填写。
    • [$VM]为扩容VM的主机名,即容器ID。
    系统显示类似如下。
  3. 登录盘古master容器内,执行以下命令,验证扩容是否成功。
    free -g
    系统显示类似如下。

清理无用Chunk

需要产品侧清理产品侧数据,待数据清理完毕,开始根据需要恢复CPT压缩。

pangu_master内存压缩

详情请参见通用方案:盘古Master内存压缩

恢复CPT压缩

  1. 登录集群AG,执行以下命令,修改pangu_LogCheckpointCheckInterval的值。
    puadmin flag -set pangu_LogCheckpointCheckInterval 3600
    系统显示类似如下。
  2. 执行以下命令,修改pangu_LogSizeForCheckpoint的值。
    puadmin flag -set pangu_LogSizeForCheckpoint 102400
    系统显示类似如下。

3.3. 结果验证

请参见环境检查,进行盘古服务检查。

4. 回滚方案

请参见恢复CPT压缩,将记录的Flag值恢复成默认值。