Win2008サーバー上のasp.netアプリケーションごとに個別のアプリケーションプールを作成する必要があるという推奨事項を読みました。
同じサーバー上に約20個のアプリがあります。これにより、20の個別のワーカープロセスが作成され、非常に無駄に思えます。
アプリケーションごとに個別のアプリケーションプールを作成することをお勧めしますか?
ServerFaultから再投稿、 " IISにアプリケーションプールを追加する理由 "
理由がある場合は、アプリをプールで分離することをお勧めします。上記の理由はいくつかあります。ただし、アプリを異なるプールに分割しないのには十分な理由があります。
同じアクセス、.NETバージョンなどを使用するアプリは、単一のプールでより効率的に実行され、より簡単に保守できます。最も厄介なことに、IISはアイドル状態のアプリプールを強制終了し、使用するたびにプールを再作成する必要があります。使用頻度の低いアプリを分離すると、ユーザーに不要な起動コストがかかります。これらのアプリを組み合わせて単一のプールは、起動コストを支払わない場合はユーザーを幸せにし、複数のプロセスとCPUスライスにメモリを提供しない場合はサーバーを幸せにし、管理者が少ないアプリプールを管理する必要がある場合は管理者を幸せにします。
以前は、同じIIS7.5サーバー上に58の.NetWebサイトと17の古いクラシックASP Webサイトがあり、サイトごとに個別のアプリプールを使用していました。 IIS圧縮が断続的に失敗し始め、スタイルシートが約5%の確率で破損していることに気づきました。サーバー上のタスクマネージャーを見ると、サーバーが4GBのRAM制限に近づいていることがわかりました。各w3wp.exeプロセスは、サイトが取得しているトラフィックの量に応じて、最大100MBのメモリを使用していました。次に、すべてのWebサイトを2つのアプリケーションプール(1つは.net 4 Webサイト用、もう1つは古いクラシックASPサイト用)に移動しました。その後に使用されるメモリの合計は3.8GBから2.8GB弱に減少しました。 -サーバーの1GB以上のメモリスペースを節約できます。変更後(そしてサーバーを数時間実行して通常のレベルのトラフィックに戻す)、w3wpプロセスはすべての.net WebサイトWebサイトに300MB、従来のASPWebサイトに20MBを使用していました。 。 IIS圧縮を問題なく再度有効にすることができました。
上記の他の投稿で述べた多くの理由から、個別のAPPプールを使用することは素晴らしいアイデアですが、同じサーバー上でかなりの数のWebサイトをホストしている場合、私の経験では、メモリのオーバーヘッドがはるかに高くなります。
個別のアプリプールを使用するかどうかは、ハードウェアの制限とセキュリティの間のトレードオフだと思います。あなたがそれをするためのリソースを持っているならば、それは良い考えです。
はい、20のアプリケーションでも良い考えです。
アプリが安定していてメモリをあまり使用しない場合は、同じアプリプールに配置しても問題ありません。アプリプールを使用すると、アプリケーションを分離できます。
アプリプールを作成するときに私が考慮する主な理由の1つは、プロセス管理です。セキュリティなどの他の理由があります。IISでホストされているアプリケーションがクラッシュすると、ホストプロセスも停止します。以前のバージョンのIISでは、これはすべてのWebアクティビティが一緒にクラッシュすることを意味していました。アプリプールを使用すると、アプリケーションを相互に分離できます。メモリリークが発生し、クラッシュし続ける場合、他のアプリは引き続き機能します。 。
異なるアプリケーションプールを作成する主な利点は、各プールに他の資格情報を提供できることです。 20個のアプリケーションは、すべて別のログインが必要な20個の異なるデータベースと通信する場合があります。その場合のベストプラクティスは、異なるサービスアカウントを使用して各アプリケーションを実行することです。
パフォーマンスについてはあまり心配しません。ほとんどの時間は、各アプリケーションがどのプロセスにあるかに関係なく、おそらく各Webアプリケーション内で費やされます。
これは、実際には、アプリケーション、セキュリティモデル、およびアプリケーションをどれだけ信頼しているかによって異なります。
アプリケーションプールを操作するときに常に考慮するように指示することがいくつかあります。
私たちは大企業のクライアントの外部請負業者として働いています。私たちはオンサイトではないため、すべてのシステムに接続できるわけではありません。開発中に、開発サーバーでアプリケーションを直接デバッグする必要がある場合があります。そのためには、w3wpプロセスにアタッチできる必要があります。アタッチしてデバッグを開始すると、プロセス全体が停止し、同じプロセス/アプリケーションプールにあるすべてのアプリケーションに影響します。専用のアプリケーションプールを作成し、そこに開発を移動することで、誰の人生も悲惨なものにすることなく、簡単にデバッグできます。