首页 文章

Cassandra节点因java堆错误而关闭

提问于
浏览
1

WARN [ScheduledTasks:1] 2013-11-04 22:51:06,619 GCInspector.java(第142行)堆是0.892615008651467已满 . 您可能需要减少可记忆和/或缓存大小 . Cassandra现在将刷新两个最大的memtables以释放内存 . 如果您不希望Cassandra自动执行此操作,请调整cassandra.yaml中的flush_largest_memtables_at阈值WARN [ScheduledTasks:1] 2013-11-04 22:51:06,633 StorageService.java(第3600行)刷新CFS(Keyspace ='OpsCenter', ColumnFamily ='rollups60')缓解内存压力INFO [ScheduledTasks:1] 2013-11-04 22:51:06,634 ColumnFamilyStore.java(第630行)排队刷新Memtable-rollups60 @ 573393486(240/4340序列化/活字节, 15 ops)ERROR [Thrift:46] 2013-11-04 22:51:06,621 CassandraDaemon.java(第192行)线程中的异常Thread [Thrift:46,5,main] java.lang.OutOfMemoryError:java中的Java堆空间位于com.datastax.bdp.transport的org.apache.thrift.transport.TFramedTransport.write(TFramedTransport.java:146)java.io.ByteArrayOutputStream.write(未知来源)的.util.Arrays.copyOf(未知来源) . org.apach上的org.apache.cassandra.thrift.TBinaryProtocol.writeBinary(TBinaryProtocol.java:73)中的server.TNegotiatingServerTransport.write(TNegotiatingServerTransport.java:390) e.cassandra.thrift.Column.write(Column.java:579)org.apache.cassandra.thrift.ColumnOrSuperColumn.write(ColumnOrSuperColumn.java:554)org.apache.cassandra.thrift.Cassandra $ get_slice_result.write( Cassandra.java:7900)org.apache.thrift.ProcessFunction.process(ProcessFunction.java:34)org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)org.apache.cassandra.thrift.CustomTThreadPoolServer java.util.concurrent.ThreadPoolExecutor上的$ WorkerProcess.run(CustomTThreadPoolServer.java:201)java.util.concurrent.ThreadPoolExecutor上的$ Worker.runTask(未知来源)java.lang.Thread上的$ Worker.run(未知来源) . run(Unknown Source)INFO [FlushWriter:20] 2013-11-04 22:51:06,635 Memtable.java(第495行)已完成刷新/data/OpsCenter/rollups60/OpsCenter-rollups60-ic-889-Data.db(519 commitplay position ReplayPosition(segmentId = 1383597360912,position = 10472305)INFO [FlushWriter:20] 2013-11-04 22:51:06,639 Memtable.java(第461行)编写Memtable-rollups300 @ 147917 4915(288/5560序列化/活字节,12个操作)INFO [StorageServiceShutdownHook] 2013-11-04 22:51:06,683 Server.java(第160行)停止侦听CQL客户端INFO [StorageServiceShutdownHook] 2013-11-04 22: 51:06,684 Gossiper.java(第1108行)宣布关闭

当压缩进行时,我的节点就会死掉 . 我有8G的max_heap_size,但我仍然不知道如何配置我的堆大小 .

1 回答

  • 2

    问题可能是缓存了太多准备好的语句(在1.2.11中解决),查看CASSANDRA-6107 . 对于可以存储的预准备语句的数量存在硬编码限制,但是如果语句本身很大并且足够的它们被缓存,则会导致高内存消耗,并且因为语句存储在缓存中并且从未被逐出表示缓存GC不会占总可用内存的百分比,并且避免缓存超出最大阈值的预准备语句 .

    然而,在说完之后,许多事情可能导致高内存消耗,包括:

    • Bloom filter(s)size(在C * 2.0及更高版本中移出堆)

    • 密钥缓存

    • 行缓存(如果已启用)

    • 可记忆的大小(或者没有足够频繁地刷新memtables)

相关问题