2012-02-13 9 views
2

私はCassandra 1.0.6バージョンを使用しています...私は約5百万個のJSONオブジェクトをそれぞれ約1百万個持っています。挿入が進むにつれて、cassandraのメモリ消費量も一定の点まで安定します。いくつかの挿入(約2〜3 lkhs)後に、rubyクライアントは私に "recv_batch_mutate":CassandraThrift :: TimedOutException例外を与えます。カサンドラはいくつかの挿入後にタイムアウト例外を与えます

また、1KBサイズのJSONオブジェクトを100万回以上挿入しようとしました。これは例外を与えません。またこの実験では、50000個のインサートと50000個のインサートの数の間にグラフをプロットしました。私は、いくつかの反復の後に挿入するのにかかる時間が急激に上昇し、突然それが落ちることが分かりました。これは、JVMによって行われるガベージコレクションが原因である可能性があります。しかし、5KBのデータを100万回挿入するのと同じことは起こりません。

何が問題なのですか? システム: - - :: - - concurrent_writes:64

    • 8ギガバイト4コア..

    カサンドラの構成で、私が使用しています設定オプションの一部memtable_flush_writers:4

  • memtable_flush_queue_size:8

  • rpc_server_type:同期

  • thrift_framed_transport_size_in_mb:30

  • in_memory_compaction_limit_in_mb:64

  • multithreaded_compaction:真

私は設定の変更を行う必要がありますか。それはJVMのヒープスペースに関連しているのか、ガベージコレクションのためですか?

+1

バッチインサートを行っていますか?もしあなたのバッチサイズは? – psanford

答えて

2

cassandra設定ファイルでrpcタイムアウトを大きくすることができます。rpc_timeout_in_msを探してください。しかし、あなたは本当にあなたのルビークライアントを接続部分で調べる必要があります。

# Time to wait for a reply from other nodes before failing the command 
rpc_timeout_in_ms: 10000 
+0

あなたの返事をありがとう。私は毎日2百万の読み書きをする必要があるユースケースを持っています..もし私がrpc_timeout_in_msを増やしても、それはスループットに影響しません。さらに、 ..それはマルチノードクラスタでうまくいくでしょうか? –

+0

あなたは本当にあなたのルビークライアントコードを調べるべきでしょう。私はルビーではうまくいきませんが、私たちの環境には複数のノードがあり、ヘクタを使って何百万ものレコードをクラスタにポンピングしています。同時に、cassandraノードから読み取っても問題ありません。たぶん、あなたのルビークライアントコードで質問を提出する必要があり、その上司はそれについてさらにコメントすることができます。ここで推測するのは非常に難しく、表面を傷つけるだけです。 – Jasonw

関連する問題