対応バージョン:i-FILTERVer.9 / Ver.10
対応OS:すべてのOS
クライアントからのリクエストが「i-FILTER」で設定しているスレッド数を超えた場合、
スレッドの処理待ち状態となり、Webアクセス遅延やタイムアウトが発生します。
関連FAQ:
▽「i-FILTER」のスレッド数の仕様について教えてください
https://www.pa-solution.net/daj/bs/faq/Detail.aspx?id=3038
▽「i-FILTER」 アクセスが多い時間帯にインターネット接続への遅延やタイムアウトが発生するのは何故ですか
https://www.pa-solution.net/daj/bs/faq/Detail.aspx?id=2225
■通信シーケンス
スレッド不足による遅延が発生するタイミングを、HTTPリクエストから
レスポンスまでの通信シーケンス図をもとに解説します。
① クライアントは、「i-FILTER」で設定しているLISTENポートに対して
TCPセッションを確立します。 (3ウェイハンドシェイク)
このタイミングで、netstatコマンドを実施した際の
TCPステータスは「ESTABLISHED」となります。
② クライアントがHTTPリクエストを送信します。
(OSはTCP[ACK]を返します)
「i-FILTER」(if_proxy)のスレッドが不足していない場合は、
accept()されフィルターやプロキシ通信などの処理が行われます。
スレッドが不足している場合、バックログと呼ばれるOSのキュー領域に
リクエストデータが滞留され、スレッドが空き次第accept()されます。
③ 「i-FILTER」は、処理が完了したHTTPリクエストに対してレスポンスを返します。
上記の様に、スレッドが不足した場合は、OSのTCP階層までは
HTTPリクエストが送信されますが、バックログにキューイングされるため、
ユーザーはレスポンス遅延を体感します。
また、パケットキャプチャで確認した場合、
②TCP[ACK]と
③「i-FILTER」からのレスポンスまでの間隔が空くことになります。
■バックログについて
バックログキューに格納されたリクエストはTCPセッション状態としては
「ESTABLISHED」となるため、「
FAQ.2225」の手順でスレッド数を確認した
場合、設定しているスレッド数を超過します。
バックログキューに格納できるリクエスト数は、管理画面から指定することが
できます。
※「i-FILTER」Ver.10.40 以降では、バックログの設定項目は削除されております。
「スレッド数」増加での対処を検討してください。
[Ver.9]
[ システム設定 / システムパラメーター設定 / システム機能設定 ]
└ [ プロキシサーバー設定 ] > [ バックログ ]
[Ver.10]
[ システム / システムパラメーター / 機能設定 ]
└ [ プロキシサーバー設定 ] > [ バックログ ]
※ バックログの制御はOSが行っているため、OSの動作によっては
指定した値と異なる場合があります。