write性能を向上させる方法
- commit logとデータディレクトリ(sstables)を異なるディスクに配置して下さい。
- 実はStep 2はありません。Writeはcommit logに書き込まれ(高速です)、次に直接メモリにロードされます(大変高速です)。この過程を更に高速化する方法は現実的にありません。
もしwrite中心の負荷で大きな遅延のスパイクが発生しているなら、原因は他の要素です。ピーク性能がまずまずなら、それを更にチューニングするより、本当に性能が悪い部分の改善に注力したほうがいいでしょう。
read性能を向上する方法
まずMemtable Thresholdsのページを確認してください。重要な設定パラメータや、システム設定についていくつか説明されています。
Compactionがシステムに与える影響を抑制する
Compactionのプライオリティを下げる(システム全体に与える影響が減りますが、Compactionにより長い時間がかかります)には、以下のオプションをcassandra.in.shに追加して下さい(0.6.3以降)。
-XX:+UseThreadPriorities \ -XX:ThreadPriorityPolicy=42 \ -Dcassandra.compaction.priority=1 \
有用なJVMオプション
-XX:+UseCompressedOops # Compressed Referenceを有効にし、64bit JVM上でメモリオーバヘッドを減少させます
Sun、IBMのJVMについてはそれぞれ次のURLにおける議論を参照して下さい。 http://wikis.sun.com/display/HotSpotInternals/CompressedOops http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/topic/com.ibm.java.doc.diagnostics.60/diag/understanding/mm_compressed_references.html
Sun JVM 6u19以前のバージョンではCompressed Reference(OOP=Ordinary Object Pointersとして知られています)は安定していません。
システム設定
ToDo: describe how top, iostat -x, and JMX stats can help you see what is making things slow
初心者の方は"Linux Performance Basics for Cassandra"を参照して下さい。