Java 卡桑德拉2.1.0内存不足
我们最近开始与卡桑德拉合作,并建立了一个 4个数据中心(DC1、DC2、DC3、DC4),(每个数据中心群集在虚拟机上运行3个节点)、内存、memtables等。配置以其默认值运行 我们在每个节点上运行一个cron作业(大约每周1个,交错),以执行修复作业 无论如何,我们有4个节点同时死亡(2个死于DC1,2个死于DC2两个DC1/DC2都在美国,另外2个在欧盟)所有内存不足时,所有4个节点上的堆栈看起来都是相同的..(完整堆栈见下文) 节点在周末崩溃,当时应该没有客户端活动击中集群(因为这是一个测试集群),查看日志显示只有修复/压缩活动 每个节点都在4gb机箱上运行,堆设置为1gb。 此时集群的实际数据负载可以忽略不计,我们有3个键空间(所有数据中心的RF=2),其中每个键空间的大小约为2-12kb。。(12kb的实际上是我们在周五刚刚安装的OpsCenter。OpsCenter的安装会导致这种情况吗?) 我怀疑到目前为止,我们还没有将超过2000亿的交易推送到系统中 你有没有想过是什么导致了这次OOM? 我简单地看了一眼hprof垃圾场,但没有什么特别突出 我们已经做了更多的挖掘,并确定 nodetool修复操作运行了12个多小时(导致另一个节点同时运行nodetool修复,我相信同时运行的两个修复导致节点OOM) 我还可以通过运行1节点工具修复作业以及节点工具压缩键空间操作,按需复制OOM错误 我不知道为什么需要12个多小时来运行修复 我们还确定,我们的一些数据目录/keyspace/table目录有超过7500多个文件,这可能导致该过程永远运行 同时阅读2.1文档,我们已经开始使用nodetool repair-par-inc 进程目前仍在运行 一些想法: 我们认为,也许对我们来说,最好的策略是:Java 卡桑德拉2.1.0内存不足,java,cassandra,cassandra-2.0,Java,Cassandra,Cassandra 2.0,我们最近开始与卡桑德拉合作,并建立了一个 4个数据中心(DC1、DC2、DC3、DC4),(每个数据中心群集在虚拟机上运行3个节点)、内存、memtables等。配置以其默认值运行 我们在每个节点上运行一个cron作业(大约每周1个,交错),以执行修复作业 无论如何,我们有4个节点同时死亡(2个死于DC1,2个死于DC2两个DC1/DC2都在美国,另外2个在欧盟)所有内存不足时,所有4个节点上的堆栈看起来都是相同的..(完整堆栈见下文) 节点在周末崩溃,当时应该没有客户端活动击中集群(因为这是一
WARN[SharedPool-Worker-13]2014-12-07 18:32:14961 AbstractTracingawareeExecutorService.java:167-线程[SharedPool-Worker-13,5,main]上的未捕获异常:{}
java.lang.OutOfMemoryError:java堆空间
在org.apache.cassandra.io.compress.CompressedRandomAccessReader.(CompressedRandomAccessReader.java:79)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.io.compress.CompressedRandomAccessReader.open(CompressedRandomAccessReader.java:43)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.io.util.compressedoolingsegmentedfile.createReader(compressedoolingsegmentedfile.java:59)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.io.util.pooligsegmentedfile.getSegment(pooligsegmentedfile.java:40)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1694)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.columniterator.IndexedSliceReader.setToRowStart(IndexedSliceReader.java:107)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.columniterator.IndexedSliceReader.(IndexedSliceReader.java:83)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java:65)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.columniterator.SSTableSliceIterator.(SSTableSliceIterator.java:42)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:179)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:284)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:59)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1872)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1680)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:345)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.db.readverbdhandler.doVerb(readverbdhandler.java:47)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62)~[apache-cassandra-2.1.0.jar:2.1.0]
在java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)~[na:1.8.011]
在org.apache.cassandra.concurrent.abstractracingawareexecutorservice$FutureTask.run(abstractracingawareexecutorservice.java:163)~[apache-cassandra-2.1.0.jar:2.1.0]
在org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:103)[apache-cassandra-2.1.0.jar:2.1.0]
我心中没有任何具体问题,但我建议在深入了解这一点之前,先了解最新的2.1版本。
WARN [SharedPool-Worker-13] 2014-12-07 18:32:14,961 AbstractTracingAwareExecutorService.java:167 - Uncaught exception on thread Thread[SharedPool-Worker-13,5,main]: {}
java.lang.OutOfMemoryError: Java heap space
at org.apache.cassandra.io.compress.CompressedRandomAccessReader.<init>(CompressedRandomAccessReader.java:79) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.io.compress.CompressedRandomAccessReader.open(CompressedRandomAccessReader.java:43) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.io.util.CompressedPoolingSegmentedFile.createReader(CompressedPoolingSegmentedFile.java:59) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.io.util.PoolingSegmentedFile.getSegment(PoolingSegmentedFile.java:40) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1694) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.columniterator.IndexedSliceReader.setToRowStart(IndexedSliceReader.java:107) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.columniterator.IndexedSliceReader.<init>(IndexedSliceReader.java:83) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java:65) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:42) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:179) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:284) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:59) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1872) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1680) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:345) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:47) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62) ~[apache-cassandra-2.1.0.jar:2.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_11]
at org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:163) ~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:103) [apache-cassandra-2.1.0.jar:2.1.0]