不十分なユーザー・リソース制限エラー
リソース制限が不十分な場合、LinuxプラットフォームのDataStax Enterpriseで多数のエラーが発生する場合があります。
リソース制限が不十分な場合、LinuxプラットフォームのDataStax Enterpriseで多数のエラーが発生する場合があります。
エラー
- (アドレス空間)またはmemlock設定として不十分
-
ERROR [SSTableBatchOpen:1 ] 2012-07-25 15:46:02,913 AbstractCassandraDaemon.java (line 139) Fatal exception in thread Thread [SSTableBatchOpen:1,5,main ] java.io.IOError: java.io.IOException: Map failed at ...
- memlock設定が不十分
-
WARN [main ] 2011-06-15 09:58:56,861 CLibrary.java (line 118) Unable to lock JVM memory (ENOMEM). This can result in part of the JVM being swapped out, especially with mmapped I/O enabled. Increase RLIMIT_MEMLOCK or run Cassandra as root.
- nofiles設定が不十分
-
WARN 05:13:43,644 Transport error occurred during acceptance of message. org.apache.thrift.transport.TTransportException: java.net.SocketException: Too many open files ...
- nproc設定が不十分
-
ERROR [MutationStage:11 ] 2012-04-30 09:46:08,102 AbstractCassandraDaemon.java (line 139) Fatal exception in thread Thread [MutationStage:11,5,main ] java.lang.OutOfMemoryError: unable to create new native thread
推奨設定
現在の制限値を表示するには、ulimit -aコマンドを使用します。このコマンドを使用して一時的に制限値を設定することもできますが、以下のように変更を永続化することを推奨します。
Package installations:
/etc/security/limits.d/cassandra.confファイルに以下の設定が含まれていることを確認してください。
<cassandra_user> - memlock unlimited
<cassandra_user> - nofile 100000
<cassandra_user> - nproc 32768
<cassandra_user> - as unlimited
Tarball installations:
RHELバージョン6.xでは、/etc/security/limits.confファイルに以下の設定が含まれていることを確認してください。
<cassandra_user> - memlock unlimited
<cassandra_user> - nofile 100000
<cassandra_user> - nproc 32768
<cassandra_user> - as unlimited
DataStax Enterpriseをルートとして実行する場合、Ubuntuなど一部のLinuxディストリビューションでは、cassandra_userを使用するのではなく、ルート用に明示的に制限を設定する必要があります。
root - memlock unlimited
root - nofile 100000
root - nproc 32768
root - as unlimited
RHEL 6.xベースのシステムでは、/etc/security/limits.d/90-nproc.confでnproc制限値も設定する必要があります。
cassandra_user - nproc 32768
すべてのインストールで、以下の行を/etc/sysctl.confに追加してください。
vm.max_map_count = 1048575
DebianおよびUbuntuオペレーティング・システムにインストールした場合、pam_limits.soモジュールは、デフォルトで有効になりません。/etc/pam.d/suファイルで、以下の行をコメント解除してください。
session required pam_limits.so
PAM構成ファイルをこのように変更することにより、システムは、/etc/security/limits.dディレクトリーのファイルを読み取るようになります。変更内容を有効にするには、サーバーを再起動するか、以下のコマンドを実行します。
sudo sysctl -p
DataStax Enterpriseプロセスに制限が適用されたかどうかを確認するには、以下のコマンドを実行します。ここで、pidはDataStax Enterpriseプロセスを現在実行中のプロセスIDです。
cat /proc/pid/limits