« 2007年6月 9日 | メイン | 2007年6月11日 » |
このブログを書く四元輝博とジョシュア清水が経営する旅行代理店スカイメリカ
ジョシュア清水 自らが操縦する、日本語でのガイドと会話を楽しみながらハワイ島を巡るセスナの旅
このブログを書く四元輝博と共にスカイメリカを経営するハワイ島在住の日本人パイロット、ジョシュア清水のブログ
スカイメリカの共同経営者、シリコンバレー在住の四元輝博によるIT情報・ベンチャー起業に関するブログ
四元輝博によるに 「組み込みJava による M2Mソリューション」に関する調査レポート・サイト
: 日付別 アーカイブ :
2007年6月10日
Listen しているソケットに対して、 OS が固有に持っているプロトコルについての最適化を 有効にするディレクティブです。 大前提となる条件は、データが受信されるか HTTP リクエスト全体がバッファされるかするまで、 カーネルがサーバプロセスに ソケットを送らないようになっている、 ということです。 現在サポートされているのは、 FreeBSD の Accept Filter と Linux のプリミティブな TCP_DEFER_ACCEPT のみです。とある。 そして、FreeBSD のデフォルト値は :
AcceptFilter http httpready AcceptFilter https datareadyである、と記述されている。 ここでやっと エラーの中にある「httpready」というキーワードがみつかった。 さらに
httpready Accept Filter は HTTP リクエスト全体を、 カーネルレベルでバッファリングします。 リクエスト全体を受信し終わると、 その後サーバプロセスにそれを送ります。 詳細については accf_http(9) を参照してください。 HTTPS のリクエストは暗号化されているので accf_data(9) フィルタのみが使用されます。と説明されている。
accept フィルタは、カーネルが入力接続を前処理することを、 アプリケーションが要求することを可能にします。 accept フィルタは、SO_ACCEPTFILTER の optname で渡すことで、setsockopt(2) システムコールを介して要求されます。とある。このように、accept_filter は カーネルが入力接続を前処理するために 汎用的なしくみを提供している。 その中でも、特に HTTP に関して バッファリングを行っているのが accf_http「ある完全な HTTP リクエストの到着までの間の入力接続バッファ」 のようだ。これを有効にすると、HTTPのリクエストが全て揃うまで、カーネル側でパケットをバッファリングしておく。 リクエストの全てが揃った段階でアプリケーションサイド(この場合はApache)へパケットを受け渡すことにより、 カーネルとアプリケーション間の無駄なタスク切り替えを少なくすることができ、 結果的にCPUの利用効率を向上されることができるようだ。
カテゴリー: Apache 22:41 | コメント (0) | トラックバック (0)