私は限られたメモリを持っている私のサーバー、上カサンドラ(Javaプロセス)を実行していますよ。I編集カサンドラの設定(config/jvm.options
)ヒープサイズを制限するために、Java仮想マシンにこれらの引数を渡します。
-Xms180M -Xmx180M
私はの出力でそれらを見ることができますps ax | grep java
ショー:
[...] /usr/lib/jvm/java-8-openjdk-amd64/bin/java [...]
-Xms180M -Xmx180M [...] org.apache.cassandra.service.CassandraDaemon
しかし、180メガバイト以上にたくさん使うようだ、と別のサーバプロセスが消えるを保持します。私は、カーネルがあるため、限られたメモリの他のプロセスを強制終了していることを推測しています。
ここでは、画面の一部ですtop
:
KiB Mem : 1009128 total, 87072 free, 643488 used, 278568 buff/cach
KiB Swap: 0 total, 0 free, 0 used. 222228 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20410 cassand+ 20 0 2048132 433828 8456 S 0.3 43.0 41:25.22 java
しないRES 433828
カサンドラによって使用されているRAMの433メガバイトがあるよりも、平均値は?私はおそらく180メガバイトにJavaヒープを制限された後、それは、可能なように見えるのか?ヒープが180 MBに制限されている場合は、何が他の433から180 = 253メガバイトを取っていますか?そして、私もそれを制限することができますか?
カサンドラは、(-Xmxによって制御される)上のヒープ部分とオフヒープ部分を有しています。オフヒープデータ構造の大部分は、典型的には、データサイズを縮小 - パーティションインデックス、ブルームフィルタ、および圧縮チャンクデータのようなものは、直接メモリ領域およびディスク使用量と増加に格納されています。
あなたはこれらの多少のチューニングをすることができますが、彼らはそれほど明白だと性能のトレードオフを持っています。例えば、調達bloom_filter_fp_chance
から0.01
にすることは0.1
非常に少ないメモリを使用しますが、あなたは読み取りパスに余分なsstablesを読むことができます。