対応バージョン: i-FILTER Ver.9 / Ver.10
対応OS: Linux
「i-FILTER」を経由したWebアクセスが遅延したり、上位プロキシ接続タイムアウトが頻発するときは
netstatコマンドを使用して通信状況を確認してください。
[参考] netstat -antpo コマンド結果
※-o オプションを使用することであと何秒で TIME_WAIT、FIN_WAIT 状態が終わるか確認できます。
例えば、watch -n 1 "netstat -antpo | grep TIME_WAIT" とすると、TIME_WAIT状態になった
通信が順次消えていくことを観察することができます。
netstatコマンドで確認した結果、TIME_WAIT、FIN_WAIT が多く、時間が経過しても
減少しない場合は以下の観点でパラメーターチューニングを検討してください。
注意!!
本FAQでは過去事例ベースで効果のあったOSパラメーターについて記載しています。
OSの設定になるため、本FAQ記載のパラメーターを変更することによる影響や、本FAQに記載のない
パラメーター変更による効果など、詳細のご案内はいたしかねます。
詳細はOS提供元であるレッドハット社にご確認ください。
__________________
■TIME_WAIT を減らせないか
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
TIME_WAIT の長さはLinux Kernelにハードコードされている(60秒)ため
設定ファイルから変更することはできません。
ただし、以下の対応を行うことで TIME_WAIT の数を減らせる可能性があります。
<対応>
tcp_tw_reuse を有効にしてください。
「i-FILTER」の上位への通信など、外向きの接続(「i-FILTER」からの接続)に限られますが、
TIME_WAIT 状態のソケットでもタイムスタンプが1秒でも新しければ、新しい接続で再利用
できるようになります。
net.ipv4.tcp_tw_reuse = 0
↓
net.ipv4.tcp_tw_reuse = 1 |
__________________
■FIN_WAIT を減らせないか
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
通信先が完全にcloseしていない状態(ハーフクローズ)の場合に、「i-FILTER」側では
FIN_WAIT_2 となります。
<対応>
tcp_fin_timeout を短くしてください。
FIN_WAIT_2 から TIME_WAIT に移行する時間を制御する値であり、
FIN_WAIT_2 の数を減らすことができます。
net.ipv4.tcp_fin_timeout = 60
↓
例:
net.ipv4.tcp_fin_timeout = 10 |
__________________
■ポートが枯渇していないか
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
大量のWebアクセスがあったとき、TCPコネクションの状態が TIME_WAIT でいっぱいになり、
ポートが枯渇してしまうことがあります。
<対応>
ip_local_port_range を広げてください。
net.ipv4.ip_local_port_range = 32768 60999
↓
例:
net.ipv4.ip_local_port_range = 16000 65535 |
「i-FILTER」が使用するポート番号(初期値:15080、15081等)は避けて設定してください
(ポート番号は管理画面[システム / システムパラメーター / 機能設定]で確認できます)
なお、ポート枯渇で問題になるのは、「i-FILTER」サーバーから
他のサーバへ接続するときに使用するポートとなりますので、
クライアント⇒「i-FILTER」の通信は除いてください。
以下のように「i-FILTER」の待ち受けポート番号を除いて接続数を確認してください。
例:
netstat -antp | grep -v :15080 | wc -l
______________________
■ファイルディスクリプタが枯渇していないか
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
OSで設定されているファイルディスクリプタが不足すると、
OS上で動くアプリケーションが不安定になります。
「i-FILTER」は、起動時にファイルディスクリプタの設定値を参照し、
その値が50,000以下に設定されていた場合には
50,000に設定しています。
(値が50,000以上の場合はそのままその値を使用します。)
設定値は『 cat /proc/<if_proxyのPID>/limits 』でご確認ください。
また、ファイルディスクリプタが不足していないかについては
『 lsof -p <if_proxyのPID> | wc -l 』にてご確認ください。
枯渇していた場合の対応方法など、詳細は
FAQ_ID:4051 を参照してください。
▽「i-FILTER」通信が遅延します。ファイルディスクリプタ上限値について
考慮すべき点を教えてください
https://www.pa-solution.net/daj/bs/faq/Detail.aspx?id=4051