4

コミット ログ ディレクトリの合計サイズが 680 MB を超えると、この例外がスローされます

ERROR [COMMIT-LOG-ALLOCATOR] 2012-07-04 15:04:57,070 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[COMMIT-LOG-ALLOCATOR,5,main]
java.io.IOError: java.io.IOException: Map failed
    at org.apache.cassandra.db.commitlog.CommitLogSegment.<init>(CommitLogSegment.java:127)
    at org.apache.cassandra.db.commitlog.CommitLogAllocator$3.run(CommitLogAllocator.java:203)
    at org.apache.cassandra.db.commitlog.CommitLogAllocator$1.runMayThrow(CommitLogAllocator.java:95)
    at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Map failed
    at sun.nio.ch.FileChannelImpl.map(Unknown Source)
    at org.apache.cassandra.db.commitlog.CommitLogSegment.<init>(CommitLogSegment.java:119)
    ... 4 more
Caused by: java.lang.OutOfMemoryError: Map failed
    at sun.nio.ch.FileChannelImpl.map0(Native Method)
    ... 6 more
ERROR [StorageServiceShutdownHook] 2012-07-04 15:04:57,075 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[StorageServiceShutdownHook,5,main]
java.lang.NullPointerException
    at org.apache.cassandra.gms.Gossiper.stop(Gossiper.java:1132)
    at org.apache.cassandra.service.StorageService$2.runMayThrow(StorageService.java:489)
    at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
    at java.lang.Thread.run(Unknown Source)
4

3 に答える 3

3

これは、commitlogセグメントをマップするアドレススペースが不足していることを意味します。

最善の解決策:64ビットJVMにアップグレードします。

さらに悪い解決策:cassandra.yamlで、commitlog_segment_size_in_mbとcommitlog_total_space_in_mbの両方を16に設定します。

これが登場したのはこれが初めてではありません。デフォルトを改善するためにhttps://issues.apache.org/jira/browse/CASSANDRA-4422を開きました。

于 2012-07-06T23:11:16.053 に答える
3

オペレーティングシステムに応じて、JavaVMのパラメータ-Xmxとパラメータを変更する必要があります。-Xms

私は個人的にウィンドウでcassandraを実行しているので、%CASSANDRA_HOME%/bin/cassandra.bat34行目と35行目をから1Gに変更しました100M

于 2012-07-05T07:31:03.887 に答える
0

まあ、私は同じ問題を抱えていて、丸一日が無駄になりましたが、Ubuntu マシンが 32 ビットだったので、64 ビット JVM に更新できませんでした。

@jbellis : 彼からの提案は大いに役立ちました。commitlog_total_space_in_mb を 128 mb に減らしました。

しかし、これを適用した後でも、まだエラーが発生します。私はこれを解決し、/var/lib ディレクトリにある (commitlog、data、saved_caches) を含む Cassandra フォルダーを削除して、cassandra を機能させました。

**注 : コミット ログ フォルダに不要なデータ (不要なデータ) がある場合にのみ、これを試してください。

于 2012-09-26T10:31:37.937 に答える