通用方案:专有云V3环境如何修复account-lite-web-aliyun-com容器内JVM内存值过高的风险

通用方案:专有云V3环境如何修复account-lite-web-aliyun-com容器内JVM内存值过高的风险

更新时间:2020-06-17 17:32:37

1. 概述

本文主要介绍在专有云V3环境中,如何修复account-lite-web-aliyun-com容器内JVM内存值过高的风险。

1.1. 适用范围

  • 专有云V3,基础服务设备
    说明:本文适用于V3.0.0~V3.8.0的版本,包含V3.0.0的版本,不包含V3.8.0的版本。

1.2. 用户告知

  • 操作方式:黑屏
  • 操作复杂度:低
  • 风险等级:低
    说明:操作过程中需要重启Java进程。若在重启过程中,同服务的其他实例也在同时重启,可能会导致服务不可用。考虑到服务有多个实例,全部实例同时重启的概率很小,同时Java进程的启动速度较快,综合评估风险为低风险。
  • 由于account-lite-web-aliyun-com和account-session-aliyun-com容器修改内存参数的步骤一致,以下操作以修改account-lite-web-aliyun-com容器的内存参数为例。

2. 问题描述

专有云V3环境baseService-aas服务的account-lite-web-aliyun-com和account-session-aliyun-com容器,默认只分配了2GB内存,但是Java进程的-Xmx参数的值为6GB或者大于2GB。若内存分配不合理,可能会出现主备容器的Java进程出现OOM,从而导致进程被结束、服务不可用,进而影响业务。

3. 解决方案

3.1. 环境检查

  1. 登录天基控制台,在服务框中搜索aas,单击运维,进入服务运维页面。
  2. 在服务运维详情页面,单击服务实例,单击StandardCloudCluster-A-XXXX。
  3. 进入服务实例Dashboard页面,找到服务角色列表,单击AccountLiteWebAliyunCom#服务角色右侧的详情
  4. 机器信息表中,单击机器右侧的终端,登录AccountLiteWebAliyunCom#服务角色所在的机器。
  5. 执行以下命令,查看物理机的主机名和IP地址。
    cat /etc/hostinfo
  6. 将以下脚本上传至物理机的/tmp目录中。
    check_jvm_cgroup.sh
  7. 登录物理机,执行以下命令,执行check_jvm_cgroup.sh脚本。
    sh /tmp/check_jvm_cgroup.sh
    若提示以下内容,则表示存在JVM内存过高的风险,需要修复。
    1.png
    若提示以下内容,则表示不存在JVM过高的风险,不需要修复。
    888.jpg
  8. 登录account-lite-web-aliyun-com容器,执行以下命令,确认Java进程的Xmx参数的值为6g
    free -m;ps aux|grep java|grep --color Xmx
    系统显示类似如下。
    666.jpg

3.2. 实施步骤

  1. 登录account-lite-web-aliyun-com容器,执行以下命令,备份Java进程的配置文件。
    cp /etc/jetty/start.ini /etc/jetty/start.ini-`date +%F`
  2. 编辑/etc/jetty/start.ini文件,将-Xmx的值修改为1400m,将-Xms的值修改为1400m,退出并保存。

    444.jpg

  3. 执行以下命令,确认修改成功。
    head -25 /etc/jetty/start.ini|tail -3
    系统显示类似如下。
    666666.jpg
  4. 执行以下命令,重启Jetty应用,使配置生效。
    /etc/init.d/jetty restart
  5. 执行以下命令,确认返回结果为“OK”。
    /alidata/bin/check_health
  6. 等待十分钟之后,参考以上步骤,修复另一个account-lite-web-aliyun-com容器JVM内存值。

3.3. 结果验证

逐台登录account-lite-web-aliyun-com容器,执行以下命令,确认修改符合预期。

ps aux|grep java|grep --color Xm

系统显示类似如下。
66666666666.png

4. 回滚方案

  1. 登录account-lite-web-aliyun-com容器,执行以下命令,将备份的文件还原。
    cp /etc/jetty/start.ini-[$Date] /etc/jetty/start.ini
    说明:[$Date]为当前时间。
  2. 执行以下命令,重启Jetty应用,使配置生效。
    /etc/init.d/jetty restart