ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
以前に「Apacheの同時アクセスを制限(mod_limitipconn)する 」という記事を書きました。
Apacheでは、KeepAliveという機能があります。自分は、あまり気にしたことがありませんでした。デフォルトでは、有効になっている?らしいですが、自分のサーバーは、Offになってました。
KeepAlive とは、
HTTP の持続的な接続を有効にする機能のことで、
簡単にいうと1つのページ表示要求があった場合、クライアント(ウェブブラウザ)は、HTMLのテキスト情報を受信し、その情報を解析してそのHTMLに貼り付いている画像やCSSファイル、Javaスクリプトファイルなどを
HTMLのテキスト情報に指定されたサーバーへ要求を出すことになります。
その要求先は、ほとんどの場合、同じサーバーになることが多いと思います。(一般的に画像ファイルやCSSファイル,Javaスクリプトファイルを別々のサーバーに置いていることは、少ないと思います。)
となると、同じクライアントから再度要求が来ることが多いということですね。つまり、クライアントから最初にページ要求があったら、何度か、再度、要求がくることが考えられるわけで、
その度に、クライアントとサーバーでネットワークの接続を繰り返していると無駄ですね。遅くなりますね。
・・ということで、クライアントから最初にページ要求があったら、しばらく同じクライアントからの要求をサーバー側で待ちましょう・・・というのがKeepAlive機能です。
KeepAlive機能を使うと、クライアント側へのリアクションが早くなりますので、当然ウェブページの表示が早くなるわけです。
ただ、自分がいろいろと試した感じでは、ブラウザの画面が一気に表示されるか、全体が表示されてパラパラと画像が後で表示されるかの違いかなぁという感じでした。
もちろん、前者が、KeepAlive機能を使った場合です。
今回は、KeepAliveの使い方と注意すべき点を、簡単に解説してみたいと思います。
KeepAliveを使ってみましょう
KeepAlive関連ディレクティブは、以下のとおりです。下記のディレクティブを設定することでKeepAlive機能を制御します。
KeepAlive
HTTP の持続的な接続を有効にします。(On/Offで設定します)
KeepAliveTimeout
KeepAlive=On の時に有効で、持続的な接続で次のリクエストが来るまでサーバが待つ時間(秒)を設定します。
MaxKeepAliveRequests
KeepAlive=On の時に有効で、持続的な接続上で許可されるリクエストの数を設定します。
デフォルトの設定は、以下のようになっています。
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
上記の設定を簡単に解説すると
クライアントから要求がきたら、同じクライアントからの再要求を15秒待ちます。また、同じクライアントからの要求が100件を超えたら、待つのを止めます。
非常に一般的な設定で、1ページの必要なリンク先(画像やCSSなど)が、概ね100個を超えないということと、遅くとも15秒以内には、再要求がくるだろう・・・という前提条件のもとの設定です。
KeepAlive 機能を使うときの注意点
もちろん、良いことばかりではありません。特にページビューが激しいサイトや使えるリソースが少ないレンタルサーバーには、気をつけなければなりません。
上記の設定でいうと、最長で15秒間は、待ってしまうわけです。
これは、その待ち時間の間は他の処理をしない・・・ということでもあります。
潤沢なリソースがあれば別ですが、一般的には、来るかどうかわからない要求を待つことが、本当にメリットがあるか検討する必要があります。
結局、この待ちの間は、使えるプロセス(あるいはスレッド)が1つ減ることに違いがないわけですから、待ちの間に、他の要求が来れば、プロセス(あるいはスレッド)が不足することもあり得ます。
待って再要求が短い時間の間に来る確率が高ければ高いほど、この機能は、ある程度、有効なのだと思います。
そこで、以下のような設定に変更してみました。
KeepAlive On
MaxKeepAliveRequests 20
KeepAliveTimeout 5
最初に表示されるまでに、どれくらいの画像やCSS、Javaファイルが必要か、あるいは見て耐えられるものか・・・と考えると自分のサイトでは、せいぜい、20個ぐらいの画像やCSS、Javaファイルが読み込めたら、ページとしてなりたつなぁ・・ということで、このような設定を行いました。
あとは、待ち時間ですが、できる限り短くしたいなぁということで、日本しかターゲットにしていないので、概ね5秒でも間に合うはずかなぁ・・というところですね。
ということで、簡単ながら、KeepAliveについて書いてみました。
先にも記述しましたが、KeepAlive On にすることで劇的に表示が早くなるわけではありません。そのため、必ずしもKeepAlive Onであるべきだとも思いませんが、せっかくあるので、使ってみるのも悪くないという程度です。
ただ、設定したあとのプロセスのモニターを忘れないようにしましょう。
プロセスが異常に増えたり、待ちプロセスが増えるようなら、KeepAlive Off にすべきでしょう。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事 :
コメントを投稿 :