tailf kafka/log/server.log

[-- ::,] FATAL (main kafka.server.KafkaServerStartable ) Fatal error during KafkaServerStartable startup. Prepare to shutdown
java.lang.InternalError: a fault occurred in a recent unsafe memory access operation in compiled Java code
at kafka.log.FileMessageSet$$anon$.makeNext(FileMessageSet.scala:)
at kafka.log.FileMessageSet$$anon$.makeNext(FileMessageSet.scala:)
at kafka.utils.IteratorTemplate.maybeComputeNext(IteratorTemplate.scala:)
at kafka.utils.IteratorTemplate.hasNext(IteratorTemplate.scala:)
at kafka.log.LogSegment.recover(LogSegment.scala:)
at kafka.log.Log$$anonfun$loadSegments$.apply(Log.scala:)
at kafka.log.Log$$anonfun$loadSegments$.apply(Log.scala:)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$.apply(TraversableLike.scala:)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:)
at kafka.log.Log.loadSegments(Log.scala:)
at kafka.log.Log.<init>(Log.scala:)
at kafka.log.LogManager$$anonfun$loadLogs$$$anonfun$$$anonfun$apply$$$anonfun$apply$.apply$mcV$sp(LogManager.scala:)
at kafka.utils.CoreUtils$$anon$.run(CoreUtils.scala:)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:)
at java.util.concurrent.FutureTask.run(FutureTask.java:)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
at java.lang.Thread.run(Thread.java:)

看日志查询资料发现是磁盘满了。

[kafka@datanode15 kafka]$ du -sh /data11/kafka/
.4T /data11/kafka/
[kafka@ngsoc15 kafka]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 126G 126G % /dev
/dev/sda2 880G 14G 823G % /
/dev/sda1 190M 126M 51M % /boot
/dev/sdj .6T .8T 618G % /data09
/dev/sdf .6T .0T .5T % /data05
/dev/sdd .6T .5T 954G % /data03
/dev/sdi .6T .7T .8T % /data08
/dev/sdk .6T .4T .1T % /data10
/dev/sde .6T .5T 986G % /data04
/dev/sdb .6T .1T .4T % /data01
/dev/sdg .6T .4T .1T % /data06
/dev/sdh .6T .5T 948G % /data07
/dev/sdl .6T .4T % /data11
/dev/sdm .6T .0T 473G % /data12
/dev/sdc .6T .3T .2T % /data02

解决思路:

{3节点*12盘=36 ; 36/2副本=18分区}

sh bin/kafka-topics.sh --zookeeper zookeeper.host: --alter --topic flow_dns --partition 

* 为什么不直接报IO异常,而是内部错误不安全的内存操作?-----来自网络描述

此错误表示或内存访问导致SIGBUS错误,然后被 JVM 捕获并转换为异步 。sun.misc.Unsafe.getX()putX()InternalError

更多细节:

sun.misc.Unsafe是 JDK 私有 API,允许直接从 Java 访问本机内存。此 API 是直接字节缓冲区的基础,特别是映射字节缓冲区的基础。
在某些情况下,对文件的内存映射区域的访问可能会导致 OS 级异常,即 。典型的示例包括:SIGBUS 在基础文件被截断后,将访问内存映射缓冲区。
网络驱动器上的文件已映射到内存,并且在网络连接断开后访问映射的缓冲区。
尝试写入映射到文件系统上的文件的页面会导致内存不足(默认情况下,空间受总 RAM 的 % 限制)。tmpfstmpfs
热点 JVM 无法提前有效地检测这些问题。它编译对简单内存访问指令的调用。查看内存区域是否有效的其他检查将过于昂贵。Unsafe.getX / putX 相反,JVM 处理信号。如果它看到调用中发生了错误,它将发布到当前线程并继续执行。SIGBUGUnsafeInternalError
IOException更合适,但 JVM 不能引发它或任何其他异常,因为公共协定不允许其方法引发任何异常。ByteBufferget/put
如果 JIT 编译方法中的内存访问失败,JVM 不会立即引发异常(同样,对于此类热字节缓冲区 API 来说,这太贵了)。相反,它将异步发布到当前线程。这意味着错误实际上将扔到最近的本机方法或最接近 VM 运行时的调用处。因此,错误消息中的"最近"一词。UnsafeInternalError

参考:

https://zh.wikipedia.org/wiki/%E6%80%BB%E7%BA%BF%E9%94%99%E8%AF%AF

https://bugs.openjdk.java.net/browse/JDK-4454115

kafka 磁盘写满导致 InternalError的更多相关文章

  1. 使用df -h命令查看磁盘空间使用率不算高,还有很多空余空间,但是创建文件或写入数据时一直报错磁盘写满

    关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享一下: 一.发现问题 在公司一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h ...

  2. 阿里云rds 磁盘空间满导致实例锁定

    1.RDS 数据日志已经快满了, 导致数据库不能写入,只读. 2. Binlog日志的保存及清理规则 MySQL实例的空间内默认清理binlog日志的规则如下: 实例空间内默认会保存最近18个小时内的 ...

  3. DG备库磁盘空间满导致无法创建归档

    上周五去某客户那里做数据库巡检.是window 2008系统上10g的一套NC系统的库,已经配置了DG,可是巡检时发现数据库报错: Tue Nov 11 10:13:57 2014 LNS: Stan ...

  4. RDS数据库磁盘满导致实例锁定

    问题描述: 阿里云RDS空间不足,进行报警.收到报警后.对数据库中不重要的数据备份后执行delete删除操作.执行成功后发现数据删掉了.但是数据库的空间并没有释放.数据占用空间反而越来越大,最后RDS ...

  5. DB磁盘满导致Zabbix Server Crash一例

    故障描述 今天线上zabbix出现几次数据中断的情况,经排查为DB服务器磁盘空间不足导致的.还好我们目前我们zabbix,falcon两套监控系统并存,哈哈. 故障排查过程没什么技术含量,简单的将故障 ...

  6. 一次 KVM 虚拟机磁盘占满的排查过程

    一次 KVM 虚拟机磁盘占满的排查过程 KVM 虚拟机系统为 CentOS,文件系统为 XFS. 现象如下: 使用 df -h 命令发现磁盘剩余空间为30k(总大小为30G),使用 df -i 发现 ...

  7. Linux索引节点(Inode:no space for device)用满导致的一次故障

    问题描写叙述 在storm測试环境集群上上nimbus和supervisor自己主动挂调.重新启动时显示no space for device,也不能创建,加入文件及文件夹,df -h查看 ilesy ...

  8. hadoop Namenode因硬盘写满无法启动

    当写元数据的分区写满,可能导致namenode挂掉从而导致及时清理出大块的空间也无法启动namenode,那此时系统namenode会报错 org.apache.hadoop.hdfs.server. ...

  9. linux磁盘空间满的处理

    Java中运行SQL插入数据时报错: linux磁盘空间满处理: 1.df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) 2.分别查看输入以下命令 (面对磁盘满了,通过下列命令 ...

随机推荐

  1. 有关OI的思维导图

    看到这张图 我仿佛掉进了知识的深渊QwQ

  2. (转)datagridview 自定义列三步走

    本文转载自:http://blog.csdn.net/zx13525079024/article/details/4814642 我们如果想自定义实现datagridview的某列,例如是datagr ...

  3. sublime 3 安装格式化JSON插件

    转自 https://blog.csdn.net/sweettool/article/details/72677784     一.首先下载SublimePrettyJson插件包 https://g ...

  4. pve-备份

    一个50g的磁盘,用了13分钟 INFO: starting new backup job: vzdump 111 --node cu-pve04 --mode snapshot --compress ...

  5. Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件

    Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件 表达式中的函数有 ...

  6. 测开之路九十八:js变量和语句

    这里为了方便调试,在jsbin网站上面编写js脚本:https://jsbin.com/?js,console 可以点击增加/减少对应展示分页,Console为控制台部分,Output为页面部分 变量 ...

  7. Spring学习01——HelloSpring

    这是一个spring入门demo: package com.su.test; public class HelloWorld { public void say(){ System.out.print ...

  8. python基础-5 冒泡排序、递归

    上节总结 一.上节内容补充回顾 1.lambda func = lambda x,y: 9+x 参数: x,y 函数体:9+x ==> return 9+x func: 函数名 def func ...

  9. Java相关面试题总结+答案(七)

    [Hibernate] 113. 为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码. hibernate 是一个优秀的 ORM 实 ...

  10. Mybatis-学习笔记(1)SqlSessionFactory、SqlSession、Mybatis配置文件configuration的属性标签

    1.mybatis引入项目,只需要引入mybatis-x.x.x.jar包即可. (当然数据库驱动的引入必不可少) 2.SqlSessionFactory 由SqlSessionFactoryBuil ...