kafka节点假死

一、前言

早上醒来打开微信,同事反馈kafka集群从昨天凌晨开始写入频繁失败,赶紧打开电脑查看了kafka集群的机器监控,日志信息,发现其中一个节点的集群负载从昨天凌晨突然掉下来了,和同事反馈的时间点大概一致,于是乎就登录服务器开始干活。

二、排错

1、查看机器监控,看是否能大概定位是哪个节点有异常

2、根据机器监控大概定位到其中一个异常节点,登录服务器查看kafka日志,发现有报错日志,并且日志就停留在这个这个时间点:

[2017-06-01 16:59:59,851] ERROR Processor got uncaught exception. (kafka.network.Processor)
java.lang.OutOfMemoryError: Direct buffer memory
        at java.nio.Bits.reserveMemory(Bits.java:658)
        at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
        at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
        at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
        at sun.nio.ch.IOUtil.read(IOUtil.java:195)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
        at org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
        at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
        at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
        at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:160)
        at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:141)
        at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
        at kafka.network.Processor.run(SocketServer.scala:413)

3、查看kafka进程和监听端口情况,发现都正常,尼玛假死了

ps -ef |grep kafka        ## 查看kafka的进程
netstat -ntlp |grep 9092  ##9092kafka的监听端口

4、既然已经假死了,只能重启了

ps -ef |grep kafka |grep -v grep |awk ‘{print $2}‘  | xargs kill -9  
/usr/local/kafka/bin;nohup ./kafka-server-start.sh ../config/server.properties &

5、重启后在观察该节点的kafka日志,在一顿index重建之后,上面的报错信息在疯狂的刷,最后谷歌一番,解决了该问题

三、解决方案:

/usr/local/kafka/binkafka-run-class.sh

去掉

-XX:+DisableExplicitGC

添加

-XX:MaxDirectMemorySize=512m

在一次重启kafka,问题解决。

PS:参考链接:http://ju.outofmemory.cn/entry/75905

时间: 2024-11-13 05:08:12

kafka节点假死的相关文章

Zookeeper和分布式环境中的假死脑裂问题(转)

Zookeeper和分布式环境中的假死脑裂问题 最近和同事聊天无意间发现他们的系统也存在脑裂的问题.想想当初在我们的系统中为了解决脑裂花了非常大的功夫,现在和大家一起讨论下脑裂,假死等等这些问题和解决的方法. 在一个大集群中往往会有一个master存在,在长期运行过程中不可避免的会出现宕机等问题导致master不可用,在出现这样的情况以后往往会对系统产生很大的影响,所以一般的分布式集群中的master都采用了高可用的解决方案来避免这样的情况发生. master-slaver方式,存在一个mast

Tomcat假死的原因及解决方案

服务器配置:linux+tomcat 现象:Linux服务器没有崩,有浏览器中访问页面,出现无法访问的情况,没有报4xx或5xx错误(假死),并且重启tomcat后,恢复正常. 原因:tomcat默认最大连接数(线程数)200个,默认每一个连接的生命周期2小时(7200秒),tomcat使用http 1.1协议,而http1.1默认是长连接.tomcat接受处理完请求后,socket没有主动关闭,因此如果在2小时内,请求数超过200个,服务器就会出现上述假死现象. 解决方案1:及时断开socke

浏览器假死

在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出"脚本运行时间过长"的提示框,如果出现这种情况说明你的脚本已经失控了,必须进行优化. 为什么会出现这种情况呢,我们先来看一下浏览器的内核处理方式: 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程. JavaScript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来然后加以处理,浏览器无论再

XenServer 虚拟机假死亮黄解决思路之我见 2

去年曾经写过一篇文章,关于XenServer虚拟机假死的问题,http://kaiqian.blog.51cto.com/236001/1625411 有兴趣的同学可以参看此文章. 前段时间又有人向我反映这个问题,所以延续当时的思路做了进一步排错. 现象:一台XenServer上的在正常运行过程中,数台虚拟机进入亮黄.假死的状态,由于是生产环境,管理员直接将服务器重启,虚拟机工作正常.但这个问题据说之前还发生过一次,说明不是单点问题,所以需要找到问题的原因,防止此问题再次发生. 初步检查:服务器

Tomcat 7 假死调优

最近系统二次开发之后,发现使用的 Tomcat 7 会经常假死.前端点击页面无任何反应,打开firebug,很多链接一直在等待服务器的反应.查看服务器的状态,CPU占用很少,最多不超过10%,一般只有2%,3%左右,内存占用倒是接近80, 90%.一开始怀疑是tomcat内存配置不够,但是打开 jvisualvm.exe 分析,发现Tomcat 占用的堆内存没有什么问题.因为是假死,所以最后怀疑到 tomcat的 链接数和 数据库的链接数的配置估计太小了.netstat -na 结果页显示很多t

Powershell使用 OpenFileDialog类 假死问题解决。

我创建了一个打开文件的函数.代码内容: function Openfile {   Add-Type -AssemblyName System.Windows.Forms   $openfile = New-Object System.Windows.Forms.OpenFileDialog   $openfile.Filter = '图片|*.jpg|All Files|*.*'   $openfile.InitialDirectory = "C:\ManageOperate\Staff Ph

[转] 实现winfrom进度条及进度信息提示,winfrom程序假死处理

china_xuhua 原文地址 1.方法一:使用线程 功能描述:在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线 程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息).下面我就简单结合一个我写的例子给大家做一个介绍. 第一步:设计界面,注意需要引用 using System.Threading; 控件名称分别为: progressBar1:label1:textBox1:button1: 第二

Eclipse for Linux程序使用时假死

如果已经假死,并且无法关闭,打开终端输入指令 eclipseSID处填写eclipseSID号 $top $sudo kill eclipseSID 这时就可以强制关闭假死的eclipse了 假死解决方案 1. 打开终端(terminal)然后输入以下指令: export SWT_GTK3=0 2.然后进入eclipse的目录下 ,用gedit打开eclipse,ini文件,对其进行如下修改: cd /home/lt/eclipse/jee-mars/eclipse/ sudo gedit ec

iOS侧滑手势导致的假死

最近做项目的时候遇到个非常奇怪的情况,点击cell的时候会莫名的假死,将程序进入后台再切回来假死消失,但是还是不能进行操作.遇到这个问题的时候也真是一头雾水,找了很多资料,也试了很多办法,依然不起作用.后台仔细研究出现假死的情况发现每次在点击控制器最左边的时候就会出现假死情况,想了想是否和自带的侧滑手势有关,然后写了测试程序,发现果然是这个手势在作怪. 代码结构 代码结构就很简单了,根控制器是tabBarController,然后是两个navigationController,导航栏控制器根控制