都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

そろそろ IIS のチューニングをする - その1( keep-alive 設定 ) -

 IIS のチューニングをそろそろ開始しなければいけません。しかし、IIS のチューニング自体まじめにやった経験がありません。Windows Azure に Windows Server 2012 R2 でも作って、色々調査してみます。ふと、思ったんですが、仮想マシンの作成やたら高速になった気がするんですが、気のせいでしょうか?あと、仮想マシンの削除が少しだけ便利になっていますね。ディスクを削除するか選択できるようになっています。今までは、仮想マシンを削除した後に、ディスクも消去しなければいけませんでした。地味ですが、徐々に改善されていますね。

f:id:koogucc11:20131124073235p:plain

 IIS のお話に戻りましょう。IIS のチューニング項目は色々ありますが、今回は keep-alive を取り上げたいと思います。keep-alive とは、Web サーバとの接続を維持し続けるための設定です。接続をし続けると、Webサーバからのレスポンスは高速になりますが、クライアントがWeb サーバにリクエストを投げていない間も、接続が継続されるため、Web サーバのリソースを無駄に使用してしまいます。

 IIS のデフォルト設定は、規定で有効、接続タイムアウトは 120 秒です。KeepAlive の設定は下記の手順で確認できます。Default Web Site → Http Response Header をクリックします。

f:id:koogucc11:20131124083054p:plain

 Set Common Headers をクリックします。

f:id:koogucc11:20131124083239p:plain

 Enable HTTP keep-alive をチェックすることで、keep-alive が有効になります。

f:id:koogucc11:20131124083331p:plain

 次に keep-alive の接続タイムアウト設定です。Site をクリックして、Set WebSite Default をクリックします。

f:id:koogucc11:20131124083440p:plain    

 Connection-Time Out が keep-alive の接続タイムアウト設定です。

f:id:koogucc11:20131124083557p:plain

 単に keep-alive の設定を無効にするだけで、昔、担当していたプロジェクトでは Webサーバのレスポンスがよくなったことがあります。( apacheですが.... ) keep-alive の有効・無効の設定というより、そもそも接続タイムアウトの 120秒という設定に問題があります。ユーザーの一回の操作で発行されるリクエストがすべて終わるまで、接続が続いていればよいだけで、ユーザーの操作がない間は接続している意味はありません。というわけで、接続タイムアウトをもう少し短くする必要があります。ただ、この値がどのくらいが最適なのかは実際に検証してみないとわかりません。(おそらく、10秒以下でも問題ないと思います。)それぞれの環境で検証して、最適値を導き出してみてください。