2012-03-20 15 views
5

私は現在、CassandraSharpを使用して3つのノードを持つCassandraをベンチマークしています。 私の主な関心事は、スループットよりも待ち時間があるので、GCのチューニングのビットは、ここで私の番号は(100の000K挿入、モノスレッドで)された後:Cassandraで信頼できる挿入時間を取得するには?

  • イーター/秒:1600
  • 平均:600μs
  • 95セント:600μs
  • 99セント:5000μs
  • 最大:50000μs
ここに私の問題は、たまに私が遅れて "悪い" を得るということです

ncy(50ms)、私の目標は、より高い平均を犠牲にしても一貫したレイテンシを持つことです。

これはGCによって発生したと私は考えており、回避できるかどうか疑問に思っています。

(注意点として、それはクライアントにそれを一つのノードへのインサートの大きな金額を送信し、それを処理させるか、私は「ロード・バランス」べきことをお勧めているのですか?)

+0

GCをどのように調整したか教えてください。 Thx – odiszapc

答えて

2

若い世代のガベージコレクションでは、50msは通常の範囲内です。 GCのログ記録を有効にするには、該当する行の下に向かってコメントを外し、問題があることを確認してください。若い世代のコレクションが実際に相関している場合

(あなたのディスクがそう、それはフラッシュがシーケンシャルI/Oであるため、異例である、インサートボリューム、追いつくことはできません遅くされていない限りフラッシュしは挿入をブロックしない。)

待ち時間が長くなると、若い世代を小さくして(また、cassandra-env.shで設定されています)、スループットの待ち時間の潜在的なコストを抑えることができます。

+0

私は既にGCの最適化段階を経て、GC時間を短縮するための若い世代の空間を最小限に抑えました。 だから私はそれ以上は得られないと思う:/ – alprema

1

私はドン」一時的に悪い待ち時間の問題から逃れることができると思います。あなたが言及したGCか、Memtablesからディスクへのフラッシュを実行しているときのいずれかである可能性が最も高いです。

50msの不良インサートは本当に問題ですか? Cassandraはバッチ・ミューテータをサポートしています。これにより、1つの長いミューテータに挿入操作をキューイングし、後でインサートのバッチを実行して、メイン・スレッドを同期挿入によってブロックする必要がなくなります。期待される。私はCassandarSharpを使用していないので、この機能を公開するかどうかはわかりません。

また、カスドンドラノード間のロードバランシングはインポート時間をわずかに向上させますが、バックグラウンドで起こっていることは、インポートを提供したノードが正しいノードに転送してストレージを行うことです(あなたがそれを与えるノードが実際にプロキシとして機能するように)私は一般的なエッジケースでは多くの改善を想像しませんでした。それは何らかの理由でノードが他のことをやり始め、その性能が低下した場合に役立ちます。

0

信頼できる挿入時間に興味がある場合は、挿入時に100倍の安定したレイテンシーを提供するAcunuのCassandraディストリビューションをチェックしてみることをお勧めします(特に2番目の画像に注意してください)。

+0

このベンチマークは、Cassandra 1.0のmemtablesのアリーナ割り当ての導入によって廃止されました。これは、ここで見られる世界的に古い世代のgc休止の種類を排除しました。 (詳細:https://issues.apache。org/jira/browse/CASSANDRA-2252) – jbellis

関連する問題