
# ALM-45656 Flink作业进程Full GC频率超过阈值
#### 告警解释
系统以用户配置的告警周期（metrics.reporter.alarm.interval，默认值：30s）检查作业每个进程的Full GC次数，当检测到Flink作业的某个进程Full GC频率超出用户配置的阈值，产生该告警。当作业重启成功或删除作业时告警恢复。否则，该告警需要手动清除。
**该告警阈值计算公式为：** **Full GC次数变化的增量/Full GC次数变化的时间间隔** **，默认值为5次/min。**
- Full GC次数变化的增量：metrics.reporter.alarm.job.alarm.fullGC.count.delta，默认值：5。
- Full GC次数变化的时间间隔：metrics.reporter.alarm.job.alarm.fullGC.interval，默认值：1min，该值需要配置时间单位：s、min、h、d。
该告警只涉及Full GC次数变化的频率，不涉及单次Full GC的耗时。
- 同一作业的不同进程Full GC频率超过阈值时，都会发送告警，旧的告警会自动清除，但历史事件中有记录。
- 同一作业的同一进程若持续处于Full GC频率超过阈值状态，会连续发送告警，旧的告警会自动清除，但历史事件中有记录。
本章节仅适用于MRS 3.6.0-LTS.1及之后版本。
#### 告警属性
| 告警ID  | 告警级别 | 告警类型   | 业务类型  | 是否可自动清除 |
|:---|:---|:---|:---|:---|
| 45656 | 重要   | 业务质量告警 | Flink | 否       |
   
#### 告警参数
| 类别   | 参数名称        | 参数含义        |
|:---|:---|:---|
| 定位信息 | 来源          | 产生告警的集群名称。  |
| 定位信息 | 服务名         | 产生告警的服务名称。  |
| 定位信息 | 应用名         | 产生告警的应用名称。  |
| 定位信息 | 任务名         | 产生告警的任务名称。  |
| 定位信息 | 用户名         | 产生告警的用户名称。  |
| 附加信息 | ProcessName | 产生告警的进程名称。  |
| 附加信息 | AlarmCount  | 该进程产生告警的次数。 |
   
#### 对系统的影响
Flink作业进程频繁发生Full GC，表示作业存在内存管理不当或资源压力大的问题，这可能导致Flink作业性能下降，甚至出现OOM异常，需要查看Flink作业内存分配和程序设计是否合理。
此问题属于Flink作业级别的告警，对FlinkServer本身没有影响。
#### 可能原因
- 堆内存使用率过大，或配置的堆内存不合理，导致进程Full GC频繁。
- 告警阈值配置不合理，如阈值配置低于推荐值或合理的Full GC频率。
 
#### 处理步骤
**调整Flink作业内存配置**
1. 使用具有FlinkServer管理员权限的用户登录Manager。
2. 选择"运维 \> 告警 \> 告警 \> ALM-45656 Flink作业进程的Full GC频率超过阈值"，查看并记录该告警"附加信息"中的ProcessName，确认告警来自JobManager还是TaskManager。
3. 选择"集群 \> 服务 \> Flink"，单击"Flink WebUI"后的链接，单击"作业管理"，在作业的"操作"列单击"开发"进入作业编辑界面。
4. 在作业编辑页面的"基础参数"页签，调整"JobManager内存(MB)"的值或者"taskManager"下的"内存(MB)"的值，重启作业，观察是否还会产生该告警。 
   - 是，执行[步骤 5]。
   
   - 否，操作结束。
   
   
   
   
**调整Full GC告警阈值**
5. 通过以下两种方式调整Full GC告警阈值。
   
   - 通过FlinkServer提交作业，选择"集群 \> 服务 \> Flink \> 配置 \> 全部配置 \> FlinkServer \> 作业告警"，根据告警阈值计算公式调高Full GC告警阈值，修改完成后，单击"保存"。单击"实例"页签，同步配置并重启FlinkServer实例。
   
   - 通过客户端提交作业，选择"集群 \> 服务 \> Flink \> 配置 \> 全部配置 \> FlinkResource \> 作业告警"，根据告警阈值计算公式调高Full GC告警阈值，修改完成后，单击"保存"。单击"实例"页签，同步配置并重启FlinkResource实例。更新配置到客户端。
   
   
   
   
6. 重启作业，观察是否还会产生该告警。 
   - 是，执行[步骤 7]。
   
   - 否，操作结束。
   
   
   
   
**收集故障信息**
7. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
8. 在"服务"框中勾选待操作集群的"Flink"。
9. 单击右上角的![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002525540373.png)设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。

10. 查看作业告警对应进程的日志进行故障修复，或联系运维人员，并发送已收集的故障日志信息。操作结束。
 
#### 告警清除
Flink作业重新启动成功或删除作业，则告警恢复。否则，系统不会自动清除此告警，需手工清除。
#### 参考信息
不涉及。
