我正在解決Cassandra服務器崩潰的問題。根據Cassandra日誌[1],問題可能是Apache cassandra中的OutOfMemory。我想我們必須調整Cassandra參數來解決這個問題。有沒有其他方法可以解決這個問題?如何調整Cassandra參數以獲得最佳內存使用率?如何解決Apache Cassandra的OutOfMemory問題
日誌
INFO 16:32:17353個QpidKeySpace.NodeQueues 0,0 WARN 16:32:17353堆是0.9997729675985393已滿。您可能需要減少memtable和/或緩存大小。卡桑德拉現在將衝上兩個最大的記憶來釋放記憶。如果您不希望Cassandra自動執行此操作,請調整cassandra.yaml中的flush_largest_memtables_at閾值 警告16:32:17,353沖洗CFS(Keyspace ='QpidKeySpace',ColumnFamily ='MessageCountDetails')以緩解內存壓力 信息16:32: 17,761 MessagingService關閉服務器線程。 錯誤16:38:08,647線程中的異常Thread [ReadStage:186,5,main] java.lang.OutOfMemoryError:Java堆空間 at java.nio.ByteBuffer.wrap(ByteBuffer.java:350) at java。 nio.ByteBuffer.wrap(ByteBuffer.java:373) at org.apache.cassandra.io.util.RandomAccessReader.readBytes(RandomAccessReader.java:391) at org.apache.cassandra.utils.ByteBufferUtil.read(ByteBufferUtil。 Java的:392) 在org.apache.cassandra.utils.ByteBufferUtil.readWithShortLength(ByteBufferUtil.java:371) 在org.apache.cassandra.db.OnDiskAtom $ Serializer.deserializeFromSSTable(OnDiskAtom.java:84) 的組織。 apache.cassandra.db.OnDiskAtom $ Serializer.deserializeFromSSTable(OnDiskAtom.java:73) at org.apache.c assandra.db.columniterator.IndexedSliceReader $ IndexedBlockFetcher.getNextBlock(IndexedSliceReader.java:370) at org.apache.cassandra.db.columniterator.IndexedSliceReader $ IndexedBlockFetcher.fetchMoreData(IndexedSliceReader.java:325) at org.apache.cassandra。 db.columniterator.IndexedSliceReader.computeNext(IndexedSliceReader.java:151) at org.apache.cassandra.db.columniterator.IndexedSliceReader.computeNext(IndexedSliceReader.java:48) com.google.common.collect.AbstractIterator.tryToComputeNext( AbstractIterator.java:143) 在com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) 在org.apache.cassandra.db.columniterator.SSTableSliceIterator.hasNext(SSTableSliceIterator.java:90) 在org.apache.cassandra.db.filter.QueryFilter $ 2.getNext (QueryFilter.java:171) at org.apache.cassandra.db.filter.QueryFilter $ 2.hasNext(QueryFilter.java:154) at org.apache.cassandra.utils.MergeIterator $ Candidate.advance(MergeIterator.java: 143) 在org.apache.cassandra.utils.MergeIterator $ ManyToOne.advance(MergeIterator.java:122) 在org.apache.cassandra.utils.MergeIterator $ ManyToOne.computeNext(MergeIterator.java:96) 在COM。 google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) at org.apache.cassandra.db.filter.SliceQueryFilter。 collectReducedColumns(SliceQueryFilter.java:157) at org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:136) at org.apache.cassandra.db.filter.QueryFilter.collateOnDiskAtom(QueryFilter.java:84) at org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:293) at org.apache.cassandra。 db.CollationController.getTopLevelColumns(CollationController.java:65) at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1357) at org.apache.cassandra.db.ColumnFamilyStore。getColumnFamily(ColumnFamilyStore.java:1214) 在org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1126) 在org.apache.cassandra.db.Table.getRow(Table.java:347) 在org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:70) 在org.apache.cassandra.service.StorageProxy $ LocalReadRunnable.runMayThrow(StorageProxy.java:1052)
你有沒有試過用'-Xms512m -Xmx512m'這樣的東西增加內存? – Pieter
你有多少ram,你使用的是多大的堆? – psanford