私はUbuntu12.04をcassandra 1.1.3(tarballインストール)で使用しています。cassandraを起動しようとすると、次のようになります。
user@ubuntu:~/Apache-cassandra-1.1.3/bin$ Sudo ./cassandra -f
xss = -ea -javaagent:./../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms4G -Xmx4G -Xmn800M -XX: +HeapDumpOnOutOfMemoryError -Xss128k
user@ubuntu:~/Apache-cassandra-1.1.3/bin$
cassandraのドキュメントによると、出力は期待どおりに表示されません。
The service should start in the foreground and log gratuitously to
standard-out. Assuming you don't see messages with scary words like
"error", or "fatal", or anything that looks like a Java stack trace,
then chances are you've succeeded.
それで、問題は何ですか?
この問題は、Cassandraバグレポートbutで説明されているように、OpenJDKを使用することで発生する可能性があります。Sunでのこの問題の発生については、ここのコメントを参照してください。/Oracleおよびその他のJVM:
Oracle JVMをインストールできない場合は、conf/cassandra-env.sh
構成スクリプトでスタックサイズを変更してみてください。次のセクションの185行目あたりを探し、-Xss180k
をより高い値に変更します。
if [ "`uname`" = "Linux" ] ; then
# reduce the per-thread stack size to minimize the impact of Thrift
# thread-per-client. (Best practice is for client connections to
# be pooled anyway.) Only do so on Linux where it is known to be
# supported.
# u34 and greater need 180k
JVM_OPTS="$JVM_OPTS -Xss180k"
fi
echo "xss = $JVM_OPTS"
RackspaceとAmazonのUbuntuサーバーへのインストールをテストするときに、280kを正常に使用しました。
以下のコメントのレポートに基づいて、スタックサイズを-Xss200k
から始めて、Cassandraが正しく開始されるまで、20k刻みで増やすことをお勧めします。削除することも可能です。このオプションを使用し、スレッドごとのデフォルトのスタックサイズを使用しますが、これがメモリ消費に与える影響に注意してください。
これは、OpenJDK 1.6で実行しようとしたことが原因である可能性が高く、Ubuntu/Debianでセグメンテーション違反が発生します。シェルスクリプトがプロセスを実行する方法のため、セグメンテーション違反は非表示になっています。 $ CASSANDRA_HOME/bin/cassandraを次のように変更することで、この問題をテストできます。
この行を変更します。
exec $NUMACTL "$Java" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class"
これに:
echo $NUMACTL "$Java" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class"
次に、bin/cassandra -f
を実行し、結果のJavaコマンドをコピーします。これを直接実行して、セグメンテーション違反が発生するかどうかを確認します。これが問題である場合は、SunまたはIBMに切り替える必要があります。 JDK、または代わりにOpenJDK1.7にアップグレードできます。
私も同じでした。流れるようなステップが私を助けました。
削除cassandra $ apt-get remove cassandra
Aptリポジトリを更新する$ Sudo add-apt-repository ppa:webupd8team/Java
再インストールJava $ Sudo apt-get install Oracle-Java8-set-default
インストールcassandraもう一度$ apt-get install cassandra
私はそこからの情報を使用していました ページ