カーネル・パラメーターの設定
最適なトラフィックとユーザー制限を実現するためにカーネルを構成します。
最適なトラフィックとユーザー制限を実現するために、以下のカーネル・パラメーターを構成します。
TCP設定
トラフィックの少ない期間に、アイドル接続タイムアウトが構成されているファイアウォールにより、ローカルのノードおよび他のデータ・センターのノードとの接続が終了する可能性があります。ノード間の接続がタイムアウトになるのを回避するには、以下のネットワーク・カーネル設定を設定します。
- 以下のTCPキープアライブ・タイムアウト値を設定します。
sudo sysctl -w \ net.ipv4.tcp_keepalive_time=60 \ net.ipv4.tcp_keepalive_probes=3 \ net.ipv4.tcp_keepalive_intvl=10
これらの値は、TCP keepaliveタイムアウトを60秒に設定して、10秒間隔でプローブを3回出します。この設定では、90秒経過後(60 + 10 + 10 + 10)、切断されたTCP接続が検出されます。追加のトラフィックはごくわずかであり、これらの設定を永続的に残しても問題にはなりません。「Linuxでファイアウォール・アイドル接続タイムアウトにより、トラフィックの少ない期間にノードの通信が切断される」を参照してください。
- データベースで使用される数千の同時接続を処理するために、以下の設定を変更します。
sudo sysctl -w \ net.core.rmem_max=16777216 \ net.core.wmem_max=16777216 \ net.core.rmem_default=16777216 \ net.core.wmem_default=16777216 \ net.core.optmem_max=40960 \ net.ipv4.tcp_rmem=4096 87380 16777216 \ net.ipv4.tcp_wmem=4096 65536 16777216
ユーザー・リソースの制限を設定する
現在の制限値を表示するには、ulimit -aコマンドを使用します。このコマンドを使用して一時的に制限値を設定することもできますが、以下のように変更を永続化することを推奨します。
詳細は、「Insufficient user resource limits errors」を参照してください。
- /etc/pam.d/suファイルを編集し、以下の行をコメント解除して
pam_limits.so
モジュールを有効にします。session required pam_limits.so
PAM構成ファイルをこのように変更することにより、システムは、/etc/security/limits.dディレクトリーのファイルを読み取るようになります。
- rootとしてDSEを実行する場合は、UbuntuなどのLinuxディストリビューションでは、cassandra_userを使用せずに、ルート・ユーザーの制限を明示的に設定する必要があります。
root - memlock unlimited root - nofile 1048576 root - nproc 32768 root - as unlimited
- /etc/security/limits.d/90-nproc.conf構成ファイルでnproc制限を32768に設定します。
cassandra_user - nproc 32768
- 以下の行を/etc/sysctl.confに追加します。
vm.max_map_count = 1048575
- インストールの種類に適した構成ファイルを開きます。
インストールの種類 構成ファイル tarボール・インストール /etc/security/limits.conf パッケージ・インストール /etc/security/limits.d/cassandra.conf - 構成ファイルで
<cassandra_user>
の以下の設定を構成します。<cassandra_user> - memlock unlimited <cassandra_user> - nofile 1048576 <cassandra_user> - nproc 32768 <cassandra_user> - as unlimited
- サーバーを再起動するか以下のコマンドを実行するかして、すべての変更内容を有効にします。
sudo sysctl -p
更新された設定の保持
- 以下の値を/etc/sysctl.confファイルに追加します。
net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_probes=3 net.ipv4.tcp_keepalive_intvl=10 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.rmem_default=16777216 net.core.wmem_default=16777216 net.core.optmem_max=40960 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216
- 以下のいずれかのコマンドを使用して設定を読み込みます。
sudo sysctl -p /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.d/*.conf
- DSEプロセスにユーザー制限が適用されたかどうかを確認するには、以下のコマンドを実行します。ここで、pidはDSEを現在実行中のプロセスのIDです。
cat /proc/pid/limits