1. ホーム
  2. asp.net

[解決済み] IISのアプリプール、ワーカープロセス、アプリドメイン

2023-03-20 19:27:07

質問

どなたか、IIS におけるアプリケーション プール、ワーカー プロセス、およびアプリ ドメインの違いを説明できますか。また、これらはどのように連携しているのでしょうか。私はいくつかの記事を読みましたが、まだ少し混乱しています。

  1. IIS で作成された各 Web サイトはアプリケーションになるのでしょうか。
  2. 各アプリケーションは、1 つのワーカープロセスに関連付けられますか?
  3. アプリのドメインはどこで登場するのでしょうか?

どのように解決するのですか?

他の単語で言ってみる。

サーバーの中には、たくさんのasp.netのサイトがあり、一緒に動作していることがあります。それぞれのサイトは アプリのドメイン .

それぞれに1つの アプリケーションプール . 多くのアプリケーションドメイン(サイト)は同じアプリケーションプールを持つことができ、同じアプリケーションプールを持つため、同じプロセス、同じアカウントで実行され、プールの設定も同じになります。このプールが再起動した場合、そのプールの下にあるすべてのサイトが再起動します。

現在、各プールには 1 つまたは複数の ワーカープロセス . 各ワーカープロセスは、あなたのサイトを実行している別のプログラムであり、彼らだけの静的変数を持って、彼らは別の開始停止の呼び出しなど。異なるワーカープロセスは一緒に通信されず、データを交換する唯一の方法は、共通のファイルまたは共通のデータベースからです。複数のワーカープロセスがあり、そのうちの1つが長時間の計算を行う場合、もう1つはインターネットの呼び出しとコンテンツの表示を処理するために世話をすることができます。

多くのワーカープロセスを1つのプールに割り当てた場合、そのプールの中で ウェブガーデン と呼ばれるようになり、1台のコンピュータが1つの処理マシンであるなら、あなたのサイトは複数のコンピュータから実行されるようになります。

各ワーカープロセスは多くのスレッドを持つことができます。

ワーカープロセスが増えるとどうなるか。

というのは ワーカープロセスが1つ がある場合、すべてがよりシンプルになり、アプリケーションの中ですべての静的変数が同じになり、そしてその中で lock を使って同期させます。

を割り当てた場合 複数のワーカープロセスを を割り当てた場合、まだ lock を静的変数に使う場合、静的変数はサイトの多数の実行の間で違いはなく、もし何らかの共通のリソース (例えば、ディスク上のサムネイルの作成) があれば、ワーカープロセスを同期する必要があります。 Mutex .

もう一つ注意点があります。その音は、あなたが ワーカープロセスを増やすと を作ると、よりスムーズな非同期ページロードができるかもしれません。また、asp.netのセッションハンドラには、ページロードのためにプロセス全体をロックする小さな問題があります - あなたがそれを知っていて、それを処理する場合、それは良いことと悪いことがあります - またはそれを変更します。

そこで、多くのワーカー プロセスを持つ 1 つのサイトについてお話ししましょう。ここでは、共通のリソースの変更を同期させる必要があるという問題に直面します。 Mutex . しかし、セッションを使用するページ/ハンドラは、セッションがそれらをロックするため、非同期ではありません。これは、あなた自身の多くのポイントのこの同期を作ることを避けるため、開始するには良いことです。

このトピックに関するいくつかの質問です。

同じセッションを共有している別のウェブ アプリを処理中にウェブ アプリがブロックされる

Web サービスへの jQuery Ajax 呼び出しは同期であるように見えます。

ASP.NET Server はページを非同期で処理しません。

ASP.Netのセッションを完全に置き換える

これで、このセッションロックは異なるサイトには影響しなくなりました。

異なるサイト間で、より作業されたプロセスは、1つのサイトが長い実行プロセスで他のサイトをブロックしないようにするのに役立ちます。

各プールは少なくとも1つの作業プロセスを持っているので、異なるサイト間で、より多くのプールはまた、助けることができるが、覚えているとプロセスエクスプローラを使用して自分で見て、各作業プロセスは、コンピュータの多くのメモリを必要とし、16Gメモリと1 SQLサーバを持つ1つの大きなサーバーはあまりにも多くの異なる作業プロセスを持っていない - 例えば100共有サイトとサーバー上で、あなたは100種類のプールがあることはできません。