カーネル・パラメーターの設定

最適なトラフィックとユーザー制限を実現するためにカーネルを構成します。

最適なトラフィックとユーザー制限を実現するために、以下のカーネル・パラメーターを構成します。

TCP設定

トラフィックの少ない期間に、アイドル接続タイムアウトが構成されているファイアウォールにより、ローカルのノードおよび他のデータ・センターのノードとの接続が終了する可能性があります。ノード間の接続がタイムアウトになるのを回避するには、以下のネットワーク・カーネル設定を設定します。

  1. 以下の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でファイアウォール・アイドル接続タイムアウトにより、トラフィックの少ない期間にノードの通信が切断される」を参照してください。

  2. データベースで使用される数千の同時接続を処理するために、以下の設定を変更します。
    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」を参照してください。

Debianベースのシステム
  1. /etc/pam.d/suファイルを編集し、以下の行をコメント解除してpam_limits.soモジュールを有効にします。
    session    required   pam_limits.so

    PAM構成ファイルをこのように変更することにより、システムは、/etc/security/limits.dディレクトリーのファイルを読み取るようになります。

  2. rootとしてDSEを実行する場合は、UbuntuなどのLinuxディストリビューションでは、cassandra_userを使用せずに、ルート・ユーザーの制限を明示的に設定する必要があります。
    root - memlock unlimited
    root - nofile 1048576
    root - nproc 32768
    root - as unlimited
RHELベースのシステム:
  1. /etc/security/limits.d/90-nproc.conf構成ファイルでnproc制限を32768に設定します。
    cassandra_user - nproc 32768
すべてのシステム
  1. 以下の行を/etc/sysctl.confに追加します。
    vm.max_map_count = 1048575
  2. インストールの種類に適した構成ファイルを開きます。
    インストールの種類 構成ファイル
    tarボール・インストール /etc/security/limits.conf
    パッケージ・インストール /etc/security/limits.d/cassandra.conf
  3. 構成ファイルで<cassandra_user>の以下の設定を構成します。
    <cassandra_user> - memlock unlimited
    <cassandra_user> - nofile 1048576
    <cassandra_user> - nproc 32768
    <cassandra_user> - as unlimited
  4. サーバーを再起動するか以下のコマンドを実行するかして、すべての変更内容を有効にします。
    sudo sysctl -p

更新された設定の保持

  1. 以下の値を/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
  2. 以下のいずれかのコマンドを使用して設定を読み込みます。
    sudo sysctl -p /etc/sysctl.conf
    sudo sysctl -p /etc/sysctl.d/*.conf
  3. DSEプロセスにユーザー制限が適用されたかどうかを確認するには、以下のコマンドを実行します。ここで、pidDSEを現在実行中のプロセスのIDです。
    cat /proc/pid/limits