2009年10月28日水曜日

IIS7でKeepAliveを無効にする、短くする

IIS7はKeepAliveがデフォルト有効、タイムアウト120秒だ。
 

120は長いだろう。。と思いつつもWindows認証を使う場合KeepAliveが必須なのでどうしてもデフォルトが長いんだろうな。
Apacheなんかは最近5秒くらいじゃなかったか?俺もよく1秒とか3秒にしちゃう。
 
 

では使わない場合、短くしたい場合にどこをいじればいいのか見ておこう。
 

[caption id="attachment_1520" align="alignnone" width="640" caption="画像:KeepAliveのON/OFF1"]画像:KeepAliveのON/OFF1[/caption]
 
サイトの所を叩くと出てくるHTTP応答ヘッダーのメニューに入ろう。
右のほうに共通ヘッダーの設定というのがある、KeepAliveのON/OFFはそこで切り替える。
 

[caption id="attachment_1521" align="alignnone" width="401" caption="画像:KeepAliveのON/OFF2"]画像:KeepAliveのON/OFF2[/caption]
 
 

では次に長さ。
 

[caption id="attachment_1522" align="alignnone" width="640" caption="画像:KeepAliveの長さ設定1"]画像:KeepAliveの長さ設定1[/caption]
 
今度はさっきより一個上の階層。
また右のほう、WEBサイトの規定値の設定を開こう。
 

[caption id="attachment_1523" align="alignnone" width="450" caption="画像:Keepaliveの長さ設定2"]画像:Keepaliveの長さ設定2[/caption]
 

どうもまとめ方がイマイチしっくりこないが、ここに違いない。
KeepAliveとしっかり書いてあるわけじゃないが、元々コネクションレスのHTTPでコネクションについて書いてあるからきっとそうだ。
 

微妙に自信がなさげなのは、ココをかえても「Keep-Alive: timeout **」のレスポンスヘッダを返してくれるようになるわけじゃないからなんだよなあ。
 
一応指定した時間でコネクションは切っちゃう。けどサーバからの切断なのでエラーログにtimeoutがずらずら記述されていくというIISの仕様、IIS6からそうだよね。
ヘッダ返せばブラウザが切ってくれるのに・・・カスタムで突っ込むしかないのか。
 
 

まあ以上でIIS7のKeepAlive関連の設定はおしまい。
Windows認証を使わないんだったら、切るか1-5秒くらいにしゃちゃいなさいね。
 
 

ついでだがコマンドラインでのやり方はこっちを参照。