【问题标题】:Compaction cause OutOfMemoryError压缩导致 OutOfMemoryError
【发布时间】:2021-07-18 03:46:43
【问题描述】:

在生产中对一些大型 sstable 运行压缩时出现 OutOfMemoryError,表大小约为 800 GB,但小型 sstable 上的压缩工作正常。

$ noodtool compact keyspace1 users
error: Direct buffer memory
-- StackTrace --
java.lang.OutOfMemoryError: Direct buffer memory
        at java.nio.Bits.reserveMemory(Bits.java:693)
        at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
        at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
        at org.apache.cassandra.io.compress.BufferType$2.allocate(BufferType.java:35)

Java 堆内存(Xms 和 Xmx)已设置为 8 GB,想知道是否应该将 Java 堆内存增加到 12 或 16 GB?

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    这不是堆大小,而是所谓的“直接内存” - 您需要检查您拥有的数量(可以通过-XX:MaxDirectMemorySize=512m 之类的东西指定,或者它将采用与堆)。您可以通过增加堆大小来间接增加它,也可以通过-XX 标志显式控制它。这是good article 关于Java 中的非堆内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 2010-12-18
      • 1970-01-01
      相关资源
      最近更新 更多