memo.
用意するもの
- IIS10.0.1
HTTP protocol
- 10.0.1では
HTTP/1.1
,HTTP/2.0
をサポート。 - クライアントサイドのprotocolによりよしなに切り替えてくれる。
Application pool
- IIS Web Application worker processの設定を行う。
- Worker processはweb applicationが実行されるprocessであり、実体は
w3wp.exe
。 - 同じworker processを共有するweb application群の意。
- Worker process (ApplicationPool) を分離することでmemory空間が分かれ、1つのapplicationがcrushしたとしても他applicationを巻き込まずに済む。
Application
- (くどい言い回しだが) HTTP等のprotocolを経由してclientへサービス提供を行うfile群。
- IISではapplicationのpathがURIとなる。
- Applicationがsiteに属するだけではなくApplicationPoolにも属する。
Site
- Siteはapplication (virtual directoryも) を含み定義したbind設定を通してrequestを処理する。
- 1つ以上のapplication, またはroot application (後述) を含む必要がある。
- applicationは1つ以上の仮想ディレクトリを含む必要がある。
- virtual directoryはマシン上のphysical directoryにマップされる。
- root virtual directory
Virtual directory
- IISで各applicationが持つdirectory名 (またはpath)。
- applicationのphysical directoryにmapする。
- 1つのapplicationが複数のvirtual directoryを持つことが出来る。
- 例えばapplicationのphysicla directoryにmapしたくないfileをvirtual directoryを経由してapplicationが利用出来るようにする。
- 当該directory名はURLの一部となる。
- virtual direcotyがmapされているphysical directoryとその配下のweb.configの構成をIISが参照する。
- 参照させたく無い場合はvirtual directoryのattribute
allowSubDirConfig
をfalseに設定する。
- 参照させたく無い場合はvirtual directoryのattribute
bind
- bind protocol, bind informationの2属性を定義する。
- bind protocol
- server, clientとの通信protocolを指定する。
- bind information
- bind information (siteへのアクセス情報)
- IP Address, port, host header
WAS (Windows process activation service)
- 任意のprotocolを利用してbindを適用する。
- application poolベースのprocess起動、障害保護、状態監視、recycle等を提供する。
Root application
- IIS Site作成時にdefaultで作成されるapplication。
- 1SiteにつきRoot applicationが最低1つ以上存在する。
- Root applicationを含む個々のapplicationはRoot virtual directoryに含まれる。
applicationhost.config
上のapplication PATHが "/" になる。- Root application用のApplication Poolが存在する構成にした方が良いのか、他Application Poolに含有する形が良いのかはイマイチ不明瞭である
iisreset / AppPoolRecycleの違い
iisreset
- 既存Worker process stop
- 新規Worker process start
ApplicationPoolRecycle
- 新規Worker process (w3wp.exe) start
- 既存のw3wp processとは別に新規で起動する。
- 新規Sessionはこちらを利用。
- 既存Sessionすべて終了 / もしくは指定した時間経過後Worker process stop
Config
各種configファイルの役割
- Machine.config
- .NET Frameworkシステム全体の構成設定。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
- ApplicationHost.config
- 全Web site, applicationに関係する設定を保存。
C:\Windows\System32\inetsrv\config
- Administration.config
- IISの管理設定。
- IIS manager用の管理module他、moduleの利用する構成設定。
C:\Windows\System32\inetsrv\config
- Redirection.config
- 複数IIS serverの構成を単一ファイルで管理するためのファイル。
C:\Windows\System32\inetsrv\config
- web.config
- application rootのフォルダに配置することでそのapplicationの.NET構成設定を変更可能。
- favicon, robots.txt, redirection等の定義。
- 全体のapplication poolには影響しない
Machine.config
よりも優先される構成エントリのみを含めることが出来る。
- application rootのフォルダに配置することでそのapplicationの.NET構成設定を変更可能。
- その他
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
- この場所に配置されている
web.config
はapplicationに影響を与えない。
Trouble shootings
ApplicationPoolのWorker process宛のpingが稀にtimeoutを起こす
# event: 5138 アプリケーションプールに使われているワーカープロセスは、割り当てられた時間にプロトコル 'http' のリスナー チャネルを停止できませんでした。 # event: 5013 アプリケーションプールを提供しているプロセスはシャットダウンの最中に時間制限を超えました。
リスナーチャネルを停止
というのはIISがWorker processに対し定期的にpingしてリクエストが返らない場合に、当該processを終了しようとしていることを指す。- event_id:5138発生
- default値は30秒。
- 終了しようとするが当該processはmemory領域にいる為、停止が失敗する。
- event_id:5013発生
- 当該エラー発生時にメモリー使用率が瞬増していたりする為、当該のworker processが何らかの要因でbusy状態になっていた可能性がある。
Ping 有効化
の設定値を無効化するか、Pingの応答時間を長くする。