ALM-45649 RocksDB的Get P95耗时持续超过阈值
告警解释
系统以用户配置的告警周期(metrics.reporter.alarm.job.alarm.rocksdb.metrics.duration,默认180s)检查作业RocksDB监控数据,如果作业RocksDB的Get P95耗时达到用户配置的阈值(metrics.reporter.alarm.job.alarm.rocksdb.get.micros.threshold,默认值50000,单位微秒),则发送告警。当作业RocksDB的Get P95耗时时间小于或等于阈值,则告警恢复。
告警属性
告警ID |
告警级别 |
告警类型 |
业务类型 |
是否可自动清除 |
---|---|---|---|---|
45649 |
次要 |
业务质量告警 |
Flink |
是 |
告警参数
类别 |
参数名称 |
参数含义 |
---|---|---|
定位信息 |
来源 |
产生告警的集群名称。 |
服务名 |
产生告警的服务名称。 |
|
应用名 |
产生告警的应用名称。 |
|
任务名 |
产生告警的作业名称。 |
|
用户名 |
产生告警的用户名称。 |
|
附加信息 |
ThreshHoldValue |
系统当前指标取值满足自定义的告警设置条件的门限值。 |
CurrentValue |
系统当前指标取值满足自定义的告警设置条件的当前值。 |
对系统的影响
Flink作业RocksDB的Get P95耗时持续超过阈值,主要反应的是Flink作业的CheckPoint的性能,对FlinkServer本身没有影响。
可能原因
Flink作业RocksDB的Get P95耗时持续超过阈值的可能原因:
- Level0层SST文件数太多,导致查询慢,伴随有“ALM-45644 RocksDB的Level0层SST文件数持续超过阈值”的告警。
- 缓存命中率低于60%,导致block cache频繁的换入换出。
处理步骤
检查是否Level0层SST文件数太多
- 在FusionInsight Manager首页,选择“运维 > 告警 > 告警”。
- 在告警列表中,查看是否存在告警“ALM-45644 RocksDB的Level0层SST文件数持续超过阈值”。
- 参考“ALM-45644 RocksDB的Level0层SST文件数持续超过阈值”章节处理对应的告警。
- ALM-45644告警全部恢复后,等待几分钟,检查本告警是否恢复。
- 是,处理完毕。
- 否,执行5。
在TaskManager日志检查缓存命中率并收集日志
- 使用具有FlinkServer管理操作权限的用户登录FusionInsight Manager。
- 选择“运维 > 告警 > 告警 > ALM-45649 RocksDB的Get P95耗时持续超过阈值”,检查该告警的“定位信息”,查看并记录告警上报的任务名。
- 选择“集群 > 服务 > Yarn”,单击“ResourceManager WebUI”后的链接进入Yarn原生页面。
- 根据告警“定位信息”中的任务名找到异常任务,查找并记录作业的“application ID”,是否可以在Yarn页面上查看到作业日志。
图1 作业的“application ID”
- 单击失败作业application ID进入作业界面。
- 单击作业“Logs”列的“Logs”,查看并保存Jobmanager日志。
图2 单击“Logs”
- 单击“Attempt ID”列的ID,单击“Logs”列的“Logs”,查看并保存Taskmanager日志,执行11。
图3 单击“Attempt ID”列的ID
图4 单击“Logs”
使用具有当前Flink作业的管理操作权限的用户登录Manager,选择“集群 > 服务 > Flink”,单击“Flink WebUI”后的链接,单击“作业管理”,在作业的“操作”列选择“更多 > 作业详情”也可查看Taskmanager日志。
- 单击作业“Logs”列的“Logs”,查看并保存Jobmanager日志。
若无法在Yarn页面上查看日志,可通过HDFS下载日志
- 返回Manager,选择“集群 > 服务 > HDFS”,单击“NameNode WebUI”后的链接进入HDFS页面,选择“Utilities > Browse the file system”,在“/tmp/logs/用户名/bucket-logs-tfile/任务application ID的后4位/任务的application ID”目录下载日志。
检查是否缓存命中率过低
- 查看作业TaskManager监控日志(搜索标识:RocksDBMetricPrint)中参数“rocksdb.block.cache.hit”(cache命中)和“rocksdb.block.cache.miss”(cache未命中)的值,通过如下公式计算命中率是否少于60%。
缓存命中率公式:rocksdb.block.cache.hit/(rocksdb.block.cache.hit+rocksdb.block.cache.miss)
- 是:在Flink WebUI的作业开发界面,调整如下自定义参数的值并保存后执行12。
表1 调整自定义参数 参数名称
默认值
说明
state.backend.rocksdb.block.cache-size
- 8MB
- 256MB:开启SPINNING_DISK_OPTIMIZED_HIGH_MEM
- Cache缓存大小
- 推荐8MB-1GB
state.backend.rocksdb.block.blocksize
- 4KB
- 128KB:开启SPINNING_DISK_OPTIMIZED_HIGH_MEM
- Block大小
- 推荐4KB-256KB
state.backend.rocksdb.use-bloom-filter
false
- 是否开启索引提速,若为true,则每个新创建的SST文件都将包含一个Bloom过滤器
- 推荐true
- 否:执行13。
- 是:在Flink WebUI的作业开发界面,调整如下自定义参数的值并保存后执行12。
- 重启作业,检查告警是否恢复。
- 是,处理完毕。
- 否,执行13。
- 联系运维人员,并发送已收集的故障日志信息。
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。