問題タブ [web-garden]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
web-garden - テスト目的でWebガーデンを構成する
最大ワーカープロセスを3に設定して、Web Gardenを使用するようにWebアプリを構成しました。したがって、アプリケーションを起動すると、IIS 7で3つのワーカープロセスが起動されますが、すべての要求は1つのワーカープロセスに送られます。
私の質問は、Webガーデンシナリオでセッションや静的オブジェクトなどの作業をテストしたいので、IISにリクエストごとに異なるワーカープロセスを使用させる方法があります。
ありがとう、ダルジット
.net - WAS (Web Garden) で WCF をホストする -> WorkerProcess の有効期間を制御する
WAS で WCF サービスをホストしようとしていますが、次のシナリオを達成するためにすでに数時間苦労しています。
単一のクライアントと多数の WCF 'サーバー' があります。エンドポイントのアドレス、クライアント要求 (またはその他のパラメーター) に基づいて、新しいワーカー プロセスを生成して WCF サービスをホストするか、既存のワーカー プロセス (そのアドレス/パラメーター) に要求を送信する必要があります。
私は名前付きパイプを使用しています (すべてが同じマシン上で行われます)。
たとえば、次のようになります。
エンドポイント アドレス - net.pipe://localhost/MyService/A -> WAS は新しいワーカー プロセスを生成する必要があります1
エンドポイント アドレス - net.pipe://localhost/MyService/B -> WAS は新しいワーカー プロセスを生成する必要があります2
エンドポイント アドレス - net.pipe://localhost/MyService/C -> WAS は新しいワーカー プロセスを生成する必要があります3
エンドポイント アドレス - net.pipe://localhost/MyService/B -> WAS は要求を Worker Process2 にリダイレクトする必要があります
それを達成する最も簡単な方法は何ですか?
iis-7 - IIS 7.0 Web ガーデンでの MongoDB C# ソケット例外 (例: 通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の使用は 1 つだけ許可されます)
特定のポートでデータベース サーバーに接続するために、10gen Mongo C# ドライバー ( github ) を使用する ASP MVC アプリがあります。これを 3 つのワーカー プロセスを持つ IIS 7.0 Web ガーデンに展開しました。数分ごとに負荷がかかると、次の例外がスローされ、ユーザーに 500 が返されます。
私はこの例外をグーグルで検索するのに多くの時間を費やしましたが、 WCF: System.Net.SocketException - Only one usage of each socket address (protocol/network address/port) is通常許可される
しかし、利用可能なソケットの最大数を増やして TIME_WAIT 値を減らしても、問題は影響を受けませんでした。
最近、Mongo ドライバーが接続プーリングを行っていても、各ワーカー プロセスには独自のプールがあることに気付きました。これらのプールは、連携してシステムをソケット不足で実行しているか、同じソケット アドレスを同時に使用しようとしています。後者の条件は、例外が示唆するものとまったく同じであり、サイトが単一のプロセスに展開されている場合は問題が発生しないため、可能性が高いようです。しかし、Web ガーデンの外では、パフォーマンスの低下は非常に顕著であり、プロセスがクラッシュした場合、リサイクルの遅延は容認できません。とはいえ、ユーザーが 500 の応答を受け取ることも同様に容認できません。
私は次のことを検討しました:
- すべてのデータアクセス呼び出しを try/retry-n-times/fail 構造でラップします (醜く、単なる悪い習慣です)。
- マルチプロセスからマルチマシンへの移行 (現在のユーザー負荷では高価で不要)
質問:
- これらのワーカー プロセスがアドレス/ポートを適切に共有する方法はありますか?
- 各ワーカープロセスの発信接続が異なるローカルポートを使用して同じリモートポートに接続できるような、ある種の「ポートトリガー」(正しい用語ではないことは確かです) を行う方法はありますか? リモート マシンは、同じポートで複数の着信接続を問題なく処理できます。
- ソケットが不足していると思われる場合は、プロセスごとにソケット接続の数を制限して、65536 個のソケットを共有できるようにする方法はありますか。
asp.net - w3wp.exe の複数のインスタンス
Web サイトとアプリケーション プールが 1 つしかないのに、タスク マネージャーに ASP.NET w3wp プロセスが 2 つ表示される理由がわかりません。2 つのプロセスが実行されているのはなぜですか? これをグーグルで検索し、MSDN を調べましたが、答えが見つかりません。
アプリケーションのメモリ リークをデバッグしようとしています。スレッド化とプロセス内に複数のスレッドが存在するという概念は理解できますが、複数のプロセスが存在する理由がわかりません。
具体的には、どのようなシナリオで複数のプロセスが実行される可能性があるかを尋ねています。
multithreading - IIS Web ガーデンはスレッドまたはプロセスを使用しますか?
IIS でアプリケーション プールの最大ワーカー プロセス属性を設定する場合、実際に設定するのはプロセス数ですか、それともスレッド数ですか?
asp.net - ASP.NET Webgarden 共有静的オブジェクト
XMPP メッセージをクライアントに送信するために jabber-net オブジェクトを使用する必要がある Web サービスがあります。
(これは印刷を処理するためのものです。Web サービスで何かを印刷する必要がある場合、プリンターに接続された特定のマシンで実行されている Windows フォーム クライアントに、印刷ジョブの種類と URL を含む XMPP メッセージを送信すると、クライアントはダウンロードします。データをプリンターに送信します. この通信チャネルは、他の POS 機能 (引き出しを開く、チップやピン デバイスと通信するなど) にも使用されるため、印刷の代替手段は役に立ちません)。
jabber-net オブジェクトのインスタンスを含む静的オブジェクトがあります。これは XMPP サーバーにサインインし、メッセージの送信に使用できます。
これはシングルスレッドでうまく動作します。複数のスレッドで動作できるように Web サービスを Web ガーデンに変換すると、各スレッドが jabber-net オブジェクトの独自のインスタンスを取得するように見えるため、すべてのスレッドが XMPP サーバーにサインインしようとしています。つまり、彼らは継続的に追い出されます。
質問: Web ガーデン内のすべてのスレッド間でライブ オブジェクト (シリアル化されたオブジェクトではなく、データだけでなく、イベントを処理する可能性がある) を共有する方法はありますか? もしそうなら、それを行うための最良の方法は何ですか?
iis - IIS7.5 アプリケーションの初期化と Web ガーデン
IIS7.5 とアプリケーション初期化モジュールを使用している間、Web アプリケーションを常に実行し、キャッシュなどをウォームアップするためのカスタム メソッドを通知することができます。この機能を Web ガーデン モードで動作させることは可能ですか?
つまり、リクエストを処理する準備が整った複数のワーカー プロセスを用意します。
ワーカー プロセスを初期化できるようにするために必要な xml を追加しましたが、これにより、単一のワーカー プロセスが要求を受信できるようになるだけです。
とにかく、複数のワーカープロセスをすべて受信できるようにすることはありますか?
asp.net - アプリケーションが複数のサーバーでホストされている場合に、単一のフォルダーからファイルをダウンロードする方法
複数のサーバー (Web ガーデン) にデプロイされる asp.net アプリケーションがあります。私のサーバーの 1 つに、すべてのファイルが別のサービスから配置されるReadyToExportフォルダーがあります。ユーザーがダウンロード リンクをクリックすると、それをこの単一のフォルダー ( ReadyToExport )にルーティングしたいと考えました。すべてのダウンロード要求を 1 つのフォルダーにルーティングする方法を教えてください。この問題を解決する方法を提案してください。
.net - Web ガーデニングによるパフォーマンス監視
Web ガーデニングが実装されているアプリケーションのパフォーマンスを監視する方法を知っている人はいますか? 基本的に Web ガーデニングの実装では、w3wp プロセスのインスタンスが複数存在します。では、目的が w3wp プロセスのプライベート バイトを監視することであり、監視するプロセスが複数ある場合、どのパフォーマンス カウンターを追加する必要があるのでしょうか? たとえば、w3wp、w3wp#1 などの w3wp プロセスの複数のインスタンスが表示されています。perfmon にカウンターを追加する場合、w3wp プロセスのすべてのインスタンスを選択する必要がありますか? はいの場合、csv ファイルには w3wp と w3wp#1 のプリンセスのプライベート バイトも表示されるため、後で結果を解釈する方法を教えてください。ガベージ コレクションと GC に費やされた時間についても同じですか?
c# - Web ガーデンの Comet サーバー
IHttpAsyncHandler
コメット/ロングポーリングリクエストを処理するために を使用しています。MyAsyncResult
ハンドラーは接続を開いたままにして、オブジェクトを static に保存しますConcurrentSet<MyAsyncResult>
。
別の要求 (comet を応答させる要求) が行われると、プログラムはMyAsyncResult
リスト内のオブジェクトを見つけて要求を完了します。
私の問題は、アプリケーションを Webgarden で実行するように変更すると、この静的変数がすべてのワーカー プロセスで共有されないため、この実装が機能しないことです..
現在、MyAsyncResult
オブジェクトを SQL データベースに格納する方法や、有用なあらゆる種類のオブジェクト (IHttpHandler
それ自体や、EndProcessRequest メソッドを指すデリゲートなど) を格納する方法がありません。特定の ID と文字列を SQL データベースに保存し、新しい値を継続的にチェックすることもできますが、これはコストがかかるようであり、そもそもロング ポーリングを使用するという目的に反するものです。
ウェブガーデン全体で静的データを共有する方法はありますConcurrentSet
か? IHttpAsyncHandler
または、信号が応答を送信するのを待っているそこに座っているものを取得できる他の方法はありますか?
編集:
プロセス間で変数を共有する方法がない場合、他のすべてのワーカー プロセスにブロードキャストする方法はありますか? ここで必要なのは、2 つの整数パラメーターを持つ単一の信号だけです。