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. qbzt day3 晚上 平衡树的一些思想

    pks大佬的blog 二叉查找树 任何一个节点左子树的所有元素都小于这个节点,右子树的所有元素都大于这个节点 查找一个节点:从根节点开始,比他小就向左走,比他大就向右走 平衡树:解决二叉查找树的一些痛 ...

  2. vue +ts 的一次踩坑日记

    在vue的方法里面写事件的时候比如写一个路由跳转,方法大概如下:  goBack1() {            console.log(this);            this.$router. ...

  3. Collector 源码分析

    Collectors Collectors 配合 stream 可以实现 MapReduce 操作,也可以单独完成流中元素的收集. 收集器接口和实现 /** * 收集器接口 */ public int ...

  4. Eclipse SVN插件版本

    http://subclipse.tigris.org/servlets/ProjectProcess;jsessionid=FE8EBF532DA84BAFF9543019D01A1B15?page ...

  5. Caffe参数交换源码分析

    对境准备:对于多个GPU而言,一台机器2个GPU,参数交换的流程图: 参数交换从main()进入train()函数,在train函数中找到对应源码为: . . . . . ) { caffe::P2P ...

  6. YOLOV3中Darknet中cfg文件说明和理解

    今天将要说明的是Darknet中的cfg文件,废话少说,直接干!(以cfg/yolov3.cfg为例,其它类似) [net]                        ★ [xxx]开始的行表示网 ...

  7. python基础-5.2装饰器

    1.了解装饰器前准备 #### 第一波 #### def foo(): print 'foo' foo #表示是函数,仅指向了函数的地址,为执行 foo() #表示执行foo函数 #### 第二波 # ...

  8. python 模块导入import和import from区别

    模块就是一个.py文件,在名字空间下导入模块导入import和import from,那么python 模块导入import和import from区别是什么呢 1,import 导入模块 impor ...

  9. Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍

    原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...

  10. vue.js(14)--自定义全局指令

    <input type="text" class="form-control" v-model="keywords" v-focus& ...