距离上次解决flink计算业务链相关指标延迟问题已经过去2个多月,当时根据解决问题的过程编写了<<开源组件Flink性能优化之实时计算延迟填坑记>> 。
自从上次解决flink内存泄漏的问题后,2个多月时间内,在flink组件上的所有任务一直平稳运行,但最近监控日志采集入库延迟的告警短信频频响起,表明问题来了。
最初以为是更新flink运行包的原因,于是比对版本和代码,发现flink日志采集任务部分的程序没有做任何的更改,flink环境也没有变化,对于程序来说,如果输出发生变化,程序和环境没有变化,那唯一的解释就是输入发生了变化,日志采集数据量上升导致了日志延时。那就统计每天的日志采集数据量,但采集客户端及服务端没有这个处理的数据量,kafka也没法统计每天的写入量,而flink也是只能看到处理的总数据量。
统计不到没关系,我们把数据量降下来不就可以看到,停一部分采集再看日志入库还会不会延时,问题不就确定了吗?但是经过和应用开发商沟通,每个日志都不能下线或停止采集。
怎么办,优化呗,问题是优化哪里?首先需要先找到数据的增长对哪个环节影响最大,这时候我们就应用到奥卡姆剃刀原则,奥卡姆剃刀原则又名简约之法则,这是一个解决问题的法则,剔除多余的不必要的环节,直到简单到不能再简单,此时暴露出来的地方就是问题关键。
flink日志采集任务经过采集客户端,采集服务端,kafka,flink,es。经过消费中间过程的kafka,发现kafka中的日志是最新的,没有延时,排除前面采集过程导致的延时,所以问题出在flink消费kafka数据写入es这个环节,在这个过程中有三个步骤,flink解码,flink分词,flink入库,下面我们将一个个去掉,测试哪个环节影响日志任务延时。
第一步,由于客户在使用的过程中,并没有用到flink的分词去查询,去掉flink分词过程后经过观察依然出现延时,说明可能是解码和入库过程发生了延时。
第二步,再去掉解码,仅保留flink入库过程,此时依然出现延时,可以确定flink入库是延时的一个环节。既然确定flink入库是延时的一个原因,首先我们优化flink入库,提高写入es的数据量,由于es的参数设置早已经经过优化设置,没有太多回旋的余地,只能选择关闭es副本,提高es写入数据量。
第三步,关闭副本后,加上上面两步关闭的解码和分词,在去掉解码,分词和关闭副本后,程序正常没有延时,此时可以作为正常的基点。
第四步,再次开启副本后,在解码,分词是关闭状态下出现了延时,验证了之前的开启副本产生延时。
第五步,关闭副本,关闭分词,仅开启解码,此时没有出现延时,说明解码对延时不产生影响。
第六步,关闭副本状态下,开启解码和分词,此时立刻出现延时,说明分词过程也是日志采集入库延时的一个原因。
综上步骤测试,验证了在数据量上升的过程中,分词过程和开启es副本对日志采集入库延时的影响最大。解码几乎不受数据量增长的影响。
既然找到了问题是flink分词过程和es副本,所以需要优化的地方就是这两个:
优化es副本:
将副本开启时间改为凌晨,凌晨将昨天写入的数据在凌晨的空闲时间再生成副本,避免写入的时候产生es副本;
优化flink分词过程:
由于已经定位是flink的分词影响,所以针对分词处理过程和分词处理结果入库环节效率进一步优化。
在解决问题的过程中,发现有些地方做的不足,比如未统计每天及每小时采集数据量做基线,在出现问题时,无统计数据历史基线对比,无法说服用户是日志数据增长导致的延时。目前我们已经部署了脚本监控每天和每小时写入es的数据量,确保下次出现问题时有据可查。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130119.html
摘要:在开发设计中有一些常用原则或者潜规则,根据笔者的经验,这里稍微总结一下最最常用的,以飨读者。是处理复杂性的一个原则。参考六大设计原则里氏替换原则奥卡姆剃刀如有问题可以通过邮件微信联系我。 在开发设计中有一些常用原则或者潜规则,根据笔者的经验,这里稍微总结一下最最常用的,以飨读者。 DRY 这里的DRY是Do Not Repeat Yourself的缩写。具体解释参见 ,严谨的定义是 E...
摘要:彼得原理每个组织都是由各种不同的职位等级或阶层的排列所组成,每个人都隶属于其中的某个等级。对一个组织而言,一旦相当部分人员被推到其不称职的级别,就会造成组织的人浮于事,效率低下,导致平庸者出人头地,发展停滞。 1、蘑菇管理 蘑菇管理是许多组织对待初出茅庐者的一种管理方法,初学者被置于阴暗的角落(不受重视的部门,或打杂跑腿的工作),浇上一头大粪(无端的批评、指责、代人受过),任其...
摘要:在移动端,爱奇艺月度总有效时长亿小时,稳居中国榜第三名。爱奇艺的峰值事件数达到万秒,在正确性容错性能延迟吞吐量扩展性等方面均遇到不小的挑战。从到爱奇艺主要使用的是和来进行流式计算。作者:陈越晨 整理:刘河 本文将为大家介绍Apache Flink在爱奇艺的生产与实践过程。你可以借此了解到爱奇艺引入Apache Flink的背景与挑战,以及平台构建化流程。主要内容如下: 爱奇艺在实时计算方...
阅读 1249·2023-01-11 13:20
阅读 1557·2023-01-11 13:20
阅读 1011·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3971·2023-01-11 13:20
阅读 2518·2023-01-11 13:20
阅读 1310·2023-01-11 13:20
阅读 3485·2023-01-11 13:20