URLをクリップボードにコピーしました
FAQ_URL:https://www.pa-solution.net/daj/bs/faq/Detail.aspx?id=4051
|
最終更新日 2018/12/10 |
FAQ_ID:4051 |
Business >
i-FILTER Ver.9/Ver.10/Reporter >
システム構成
Business >
i-FILTER Ver.9/Ver.10/Reporter >
トラブルシューティング
|
「i-FILTER」通信が遅延します。ファイルディスクリプタ上限値について考慮すべき点を教えてください
|
|
対応バージョン: i-FILTER Ver.9 / Ver.10
対応OS: Linux
OSで設定されているファイルディスクリプタ(以降、FD)が不足すると
OS上で動くアプリケーションが不安定になります。
netstatコマンドの結果から「i-FILTER」以外にOS上で動作している
全てのプロセスの通信を確認することができるため、簡易的に
OSが利用しているFDを概算で確認することができます。
「ESTABLISHED + TIME_WAIT」の合計値がOSのFD上限に近い場合は
FD枯渇が発生した可能性があります。
------------------------------------------------------------------
netstatによる全プロセスの接続数にて、以下の式を満たしている。
ESTABLISHED+TIME_WAIT≒ファイルディスクリプタ上限値
------------------------------------------------------------------
上記は「i-FILTER」の場合、新たに通信セッションを受け付けなくなる
ことを意味しています。
「i-FILTER」との通信終了後、接続が閉じられるときにTIME_WAIT状態に
なりますが、このTIME_WAIT状態のソケットが非常に多い場合、OS側に
設定されている接続数上限に達してしまい新しいソケットを作成できなく
なるため、接続解放待ち行列が発生し著しい遅延が発生します。
OSおよび「i-FILTER」の実行ユーザー(root)のファイルディスクリプタを
十分な値に設定することで、接続数増加への対応を行ってください。
注意!!
OSの設定になるため、本FAQ記載のパラメーターを変更することによる影響や
意図した動作にならない場合の対応など、詳細のご案内はいたしかねます。
詳細はOS提供元であるレッドハット社にご確認ください。
例)OSの接続数上限を「600000」、ユーザーの接続数上限を「100000」に
設定する場合の例です。下記を設定後にOSを再起動してください。
1. OSの接続数上限値を変更
--------
kernel.threads-max=600000
fs.file-max=600000
kernel.pid_max=600000
vm.max_map_count=600000
--------
2. ユーザーの接続数上限値を変更(rootで実行)
※RHEL6の場合
--------
ulimit -n 100000
--------
※RHEL7の場合
/etc/systemd/system.conf に以下追記
--------
DefaultLimitNOFILE=100000
--------
■参考
「i-FILTER」は、起動直後にOSのFD値を参照し、
その値と「50000」のどちらか大きい方を「i-FILTER」のFD値に再設定します。
・OSのFD値が50,000以下に設定されていた場合には、i-FILTERの
FD値を50,000に設定。
/proc/'if_proxyのプロセスID'/limits
Max open files 50000 50000 files
・OSのFD値が50,000以上の場合はそのままその値を使用。
|