
# ALM-19038 RegionServer存在写入负载过高Region
#### 告警解释
系统每30秒周期性检测HBase RegionServer实例上由于MemStore达到上限而阻断的请求数，并把请求数与阈值相比较，默认当连续5次检测到请求数超出告警阈值（默认为450）时产生该告警。
当HBase RegionServer实例上由于MemStore达到上限而阻断的请求数小于或等于阈值时，告警恢复。
本章节仅适用于MRS 3.6.0-LTS及之后版本。
#### 告警属性
| 告警ID  | 告警级别 | 是否可自动清除 |
|:---|:---|:---|
| 19038 | 次要   | 是       |
   
#### 告警参数
| 类别   | 参数名称              | 参数含义                  |
|:---|:---|:---|
| 定位信息 | 来源                | 产生告警的集群名称。            |
| 定位信息 | 服务名               | 产生告警的服务名称。            |
| 定位信息 | 角色名               | 产生告警的角色名称。            |
| 定位信息 | 主机名               | 产生告警的主机名。             |
| 附加信息 | Trigger Condition | 系统当前指标取值满足自定义的告警设置条件。 |
   
#### 对系统的影响
HBase RegionServer实例由于MemStore达到上限而阻断写入请求，会导致写入性能下降。
#### 可能原因
HBase客户端业务写入请求访问过载或存在热点。
#### 处理步骤
**检查HBase客户端业务写入请求是否存在访问过载或热点。**
1. 登录Manager界面，选择"运维 \> 告警 \> 告警"，查看当前告警详细信息，记录定位信息中上报告警的RegionServer实例主机名。
2. 在Manager界面，选择"运维 \> 日志 \> 在线检索"，"检索内容"输入关键词"RegionTooBusy"，"服务"选择HBase服务，"主机范围"选择[步骤 1]中获取的主机，单击"搜索"，在搜索结果中查看并记录写入负载过高的Region名称。
   
   - 如果搜索结果为单一Region频繁出现RegionTooBusy，则HBase客户端业务写入请求存在热点，执行[步骤 3]。
   
   - 如果搜索结果为多个Region出现RegionTooBusy，则HBase客户端业务写入请求可能存在访问过载，执行[步骤 4]。
   
   
   
   
3. HBase客户端业务写入请求存在热点时，可对Region进行分裂操作：
   
   1. 登录HBase客户端所在节点，配置环境变量并认证用户： **cd** *客户端安装目录*
      **source bigdata_env**
      **kinit** *组件业务用户*（集群未启用Kerberos认证（普通模式）请跳过此步骤）
      
   
   2. 执行以下命令对Region进行分裂： **split '** *regionName* **'**
      *regionName* 为[步骤 2]查看到的Region名称*。* Region分裂完成后执行[步骤 5]。
      
   
   
   
   
4. HBase客户端业务写入请求可能存在访问过载，可对表进行分裂操作或修改冲洗磁盘的内存大小：
   
   - 对表进行分裂操作
     1. 在Manager界面，选择"集群 \> 服务 \> HBase"，在概览界面单击"HMaster Web UI"右侧的"HMaster(*xxx*，主）"链接，进入HBase WebUI页面。
     
     2. 在"Region Servers"区域的"Base Stats"单击上报告警的RegionServer，在该RegionServer的"Regions"区域搜索[步骤 2]查看到的Region名称，搜索结果所在行的第一个分隔符内容即为HBase表名称，例如搜索到的结果为"hbase,*xxxx*"，则HBase表名称为"hbase"。
     
     3. 返回HBase WebUI Home页面，在"Tables"区域中单击查看到的表名称进入表信息页面，在"Table Regions"区域查看"ReadRequests"、"WriteRequests"、"Start Key"和"End Key"列查看表的分区信息，确认表的预分区是否合理。
        - 是，执行[步骤 7]。
        
        - 否，执行[4.d]。
         
     
     4. 如果表的预分区不合理，且短时间内无整改业务预分区规划，可通过表级别分裂动作避免RegionTooBusy。
        1. 登录HBase客户端所在节点，配置环境变量并认证用户： **cd** *客户端安装目录*
           **source bigdata_env**
           **kinit** *组件业务用户*（集群未启用Kerberos认证（普通模式）请跳过此步骤）
           
        
        2. 执行以下命令对表进行分裂： **split '** *tableName'*
           表分裂完成后执行[步骤 5]。
           
         
      
   
   - 修改冲洗磁盘的内存大小
     1. 在Manager界面，选择"集群 \> 服务 \> HBase \> 配置"，在搜索框中搜索"hbase.hregion.memstore.flush.size"，根据实际业务调大该值以调整内存阻断的MemStore的大小，该值建议不大于256MB，否则会不利于RegionServer内存的使用。 阻断请求的内存计算公式为：hbase.hregion.memstore.block.multiplier \* hbase.hregion.memstore.flush.size
        
     
     2. 单击"保存"保存配置。单击"实例"，勾选受影响的RegionServer实例，选择"更多 \> 重启实例"，在弹窗中输入用户名和密码并单击"确定"重启RegionServer实例使配置生效。 RegionServer实例重启完成后执行[步骤 5]。
        
      
   
   
   
   
5. 等待5分钟，检查该告警是否恢复。
   
   - 是，操作结束。
   
   - 否，执行[步骤 6]。
   
   
   
   
6. 重复执行1次[步骤 1]\~[步骤 4]后，等待5分钟，检查该告警是否恢复。
   
   - 是，操作结束。
   
   - 否，执行[步骤 7]。
   
   
   
   
**收集故障信息。**
7. 在Manager界面，选择"运维 \> 日志 \> 下载"。
8. 在"服务"框中勾选待操作集群的"HBase"。
9. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。
10. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
