[解決済み] IISのアプリプール、ワーカープロセス、アプリドメイン
質問
どなたか、IIS におけるアプリケーション プール、ワーカー プロセス、およびアプリ ドメインの違いを説明できますか。また、これらはどのように連携しているのでしょうか。私はいくつかの記事を読みましたが、まだ少し混乱しています。
- IIS で作成された各 Web サイトはアプリケーションになるのでしょうか。
- 各アプリケーションは、1 つのワーカープロセスに関連付けられますか?
- アプリのドメインはどこで登場するのでしょうか?
どのように解決するのですか?
他の単語で言ってみる。
サーバーの中には、たくさんの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種類のプールがあることはできません。
関連
-
pythonでpillowをインストールする3つの方法
-
ASP.NET CoreでCAPの取引詳細を自動で有効にする
-
ASP.NET Coreで複数のサービス実装クラスをインジェクトする方法
-
[解決済み] エラー - IISメタベースにアクセスできません。
-
[解決済み] Razor View Page で名前空間をインポートするにはどうしたらいいですか?
-
[解決済み] Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). この違いは何ですか?
-
[解決済み] ASP.NETでConsole.WriteLineはどこに行くのですか?
-
[解決済み】IIS Expressでカスタムドメインを使用する場合
-
[解決済み] ASP.NETの新しいセキュリティ脆弱性の深刻度と回避方法について教えてください。
-
[解決済み] ASP.Net MVCとWebフォームを比較する最大のメリット
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ネットのメモリ管理に関する5つの基本
-
Net Core HttpClient処理 レスポンス圧縮の詳細
-
ASP.NETでWeb.configからログインする際の正しいアカウントパスワードを確認する
-
非同期タスクキャンセルと監視のネット実装
-
名前 'xxx' が現在のコンテキストに存在しない エラー解決方法の1つ
-
[解決済み] Server Error in '/' Application」エラーの解決方法を教えてください。
-
[解決済み] カタナ」と「オウイン」をわかりやすく説明すると?
-
[解決済み] データ入力後に文字列をトリミングする最適な方法。モデルバインダーをカスタムで作成した方が良いですか?
-
[解決済み] IIS Expressのweb.configにMIMEマッピングを追加する
-
[解決済み] フォーム認証のタイムアウトとsessionStateのタイムアウトの比較