【IIS7】 アプリケーションプールが結構 鬼門?!
いわゆる IIS6.0のネイティブモード、ワーカープロセス分離モードを特に開発をやっていらっしゃる方で経験されていないケースが結構あるのがここ数日のサーフィンをしている中で感じました。これはWindows Server 2003を未経験でWindows Server 2000 経験者、開発はクライアントで、且つ 2000 か XP でやっている方であれば当然のことかもしれません。体験済みの方はもうご存じだと思いますが、Vista にはアプリケーションプールを使う機能がありますのでそこで面食らうことになるということになっているようですね。
さて、アプリケーション プールってなんであるんでしょうね?
色々な理由が挙げられてきましたが、いくつかご紹介しましょう。
* アプリケーション個別でどうリソースが使われているかを把握するために隔離するため
* あるアプリケーションに特定のユーザーの権限で実行させたい
* あるアプリケーションに問題があった場合に他のアプリケーションに影響を与えないため
などなど、細かく表現すると本当に色々あります。
ではもっと遡って、今までのIISではこのいわゆる「プロセスを分離する」考え方をどう取り扱ってきたのでしょうか?
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
第一段階:
IISと同じプロセス内でアプリケーションも動作 IIS5でいうところの「低(IIS プロセス)」
IIS開発当時からある方式。
第二段階:
IISとは別にアプリケーション起動とともにプロセスを起動する IIS5でいうところの「高(分離プロセス)」
IIS4(分離プロセス)から登場した選択肢。
第三段階:
IISとは別のプロセスに指定したアプリケーションだけプールされて実行される IIS5でいうところの「中(プール)」
IIS5から登場した選択肢。XPはIIS5.1でこの段階。
※XP の x64版 はWindows Server 2003 の開発ツリーですから実はIIS6 なのが注意。
第四段階:
IISとは別でかつ任意のアプリケーションの組合せでプロセスを起動する
この第四段階のアプリケーションのグルーピングに使うのが アプリケーション プール です。
IIS6から登場した選択肢。ワーカープロセス分離モードにすると利用できる。IIS5 互換だと第三段階まで。
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
IIS7では基本的にこのプロセス分離の考え方はIIS6と同じですからクラシックモード、統合モードともにこの概念を知っていないとわからなくなってしまう訳ですね。また、XPをアップグレードした場合には前にブログを書いたサポート技術情報にあるように1つのアプリケーションプールに全部寄せられたりするのでさらにわかりにくいかもしれません。でもあくまでも第四段階の構造で、そこはIISの設定としてきちんと検討すべきポイントだというのをわかってもらえたらなと思います。
= English =
[IIS7] Seems like application pool is the one everyone is having trouble with
IIS6's native mode, Worker Process Isolation Mode is not well understood by many people especially developers from my net surfing research in the last couple of days. This would probably be people who haven't experienced Windows Server 2003 yet and an experienced Windows 2000 Server user. Also these people are obviously using Windows 2000 and Windows XP as development platform. People who have already experienced Windows Vista, IIS7 has the application pool feature so there everyone experiences this and feel "What the heck is an Application Pool?"
So why is there a need for this Application Pool thing?
There have been many reasons said, I'll just write some of them here.
* Need it to make clear which application is using how much resource
* Need it to execute a specific application in a user context of choice
* Need it to isolate applications that have a problem or make the risk lower when a problem happens
If you point it out in detail, there will be much more reasons to tell.
Well let's dig deeper into the past and see how IIS has treated this process isolation idea.
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
1st Stage:
Application executes inside the IIS process. Low in IIS5
This one existed from the beginning of IIS
2nd Stage:
Application executes in it's own process besides IIS. High in IIS5.
This mode was from IIS4 - Isolated Process.
3rd Stage:
Application executes in another process other than the IIS one but is pooled in one process. Middle in IIS5. (maybe it's medium. I haven't checked the English UI)
This appeared from IIS5. Obviously XP is IIS5.1 so XP is in this stage.
**x64 XP is on the same build tree as Windows Server 2003 so it's IIS6 so be careful.
4th Stage:
Application executes in a process the Web administrator sets as Application Pool.
This appeared from IIS6. This is enabled in the IIS6 native mode, worker process isolation mode.
If IIS6 is executing in IIS5 compatible mode, the application pool settings don't appear.
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
IIS7 has the same process isolation logic as IIS6 so which ever mode you are using, Classic or Integrated mode, if you don't understand what this is, it would be complicated to understand how the application works inside. Also, as I wrote in previous posts, if you upgrade XP to Vista, the applications will be connected to one application pool so this makes it more complicated to understand. Well if you understand the differences above, it's just in the 4th stage and it's a setting you need to decide when you use IIS6 and above. I hope you get the point...