点击上方蓝字关注我们
1月11号检查平台发现数据采集异常,平台数据查询报错,经核查发现后台脚本采集程序发生大量kafka连接错误,且日志文件一夜涨至200G左右,MySQL主机存储撑爆,最终导致平台使用异常。
Kafka后台报错大量org.apache.kafka.common.network.Selector异常,查询资料发现该问题是
socket.request.max.bytes参数值过低导致(默认值为100M),调整到告警值的两倍后重启正常。
但随后在下午发现平台监控采集数据又中断了,再次检查kafka发现有新的报错信息:
(java.lang.OutOfMemoryError:Java heap space)
这次错误比较明显,内存溢出导致,需要调整kafaka启动内存,随即调整了kafka的原生start脚本kafka-server-start.sh加入如下参数:
exportKAFKA_HEAP_OPTS="-Xmx4G –Xms4G"
重启后发现还是报大量内存溢出,以为是设置过小,就改到了6G,错误依旧,ps检查了一下kakfka进程,发下启动内存写的是默认的1G!这里遇上了一个坑,kafka的start脚本其实是调用bin目录下的/kafka-run-class.sh脚本,而该脚本也设置了启动内存,所以内存参数一直未生效。
最后注释该参数,在kafka-server-start.sh加入该参数重启后恢复正常(附上设置参数如下)
export KAFKA_HEAP_OPTS="-Xmx6G -Xms6G -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
回想整个事故原因,是kafka异常导致数据采集进程异常而出现大量错误日志,以至于撑爆MySQL主机存储。而kafaka在最近以来也未做变更,随即想到最近新增大量数据作处理,新建的topic在每分钟有大量数据消费,但分区数量也有12个,请教长研的景书大师后,了解到这种情况可以调整topic数据保留时间,缓解数据量过大导致内存溢出的问题,而默认topic的数据保留时间为24h。最后修改了topic保留时间为12小时(网上有大量的修改方法,就不附上在此了)、启动内存以及调整socket.request.max.bytes参数后,算是给kakfa上了双保险,集群故障解除。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130022.html
摘要:而在服务器中应该充分利用多线程来处理执行逻辑。能保证所在的失效,该消息仍然可以从新选举的中获取,不会造成消息丢失。这意味着无需等待来自的确认而继续发送下一批消息。 showImg(https://segmentfault.com/img/remote/1460000018373147?w=702&h=369); 1.概述 Apache Kafka最早是由LinkedIn开源出来的分布式...
摘要:二基于的优先级队列方案针对以上场景,个推基于设计了第一版的优先级队列方案。架构在该方案中,个推将优先级统一设定为高中低三个级别。六总结现在个推针对优先级中间件的改造方案已经在部分现网业务中试运行,对于的稳定性,我们还在持续关注中。 showImg(https://segmentfault.com/img/remote/1460000018868129);作者:个推平台研发工程师 祥子 ...
摘要:归根到底,高可用性就意味着更少的宕机时间。首先,可以尽量避免应用宕机来减少宕机时间。降低平均失效时间我们对系统变更缺少管理是所有导致宕机事件中最普遍的原因。 我们之前了解了复制、扩展性,接下来就让我们来了解可用性。归根到底,高可用性就意味着 更少的宕机时间。 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可用性 我们常见的可用性通常以百分比表示,这本身就有其隐...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4099·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3594·2023-01-11 13:20