2016-05-10 6 views
0

私はIISでホストされているシグナルサーバーを持っています。 ハブには、ウィンドウ内で600のプロセスを開始して終了させる機能があります。ASP.NETアプリケーションで開始できるプロセスの数に制限はありますか?

しかし
//start 600 processes 
     for (int i = 0; i < 600; i++) 
     { 
      try 
      { 
       Process myProcess = Process.Start(startInfo); 
       proclist.Add(myProcess); 
       Task.Delay(10).Wait(); 
      } 
      catch(Exception e) 
      { 
       feedback = "Process " + i + " cannot be started: " + e.Message; 
       break; 
      } 
      feedback = "All processes are running."; 
     } 
     //kill them 
     foreach (var proc in proclist) 
     { 
      try 
      { 
       proc.Kill(); 
       Task.Delay(10).Wait(); 
      } 
      catch (Exception e) 
      { 
       feedback = "Process " + proclist.IndexOf(proc) + " cannot be killed: " + e.Message; 
       break; 
      } 
      feedback = "All Processes are killed."; 
     } 

、私はプロセスを殺す間奏例外を取得し、クライアントでこの関数を呼び出す:104が殺さすることはできません

プロセス:ダイAnforderungカンのNICHTのverarbeitetのwerden、ダデルProzess beendet wurde(プロセスは既に終了しているため、要求を処理することはできません。)

私は104プロセスを実行し続けることしかできないようです。残りの部分は開始直後に終了します。

  • コンソールアプリケーションで同じことを試みましたが、すべてのプロセスを開始して終了できます。
  • 別のアプリケーションを使用して大量のメモリを消費しようとしましたが、104個のプロセスを実行しておくこともできます。
  • 別のアプリケーションを使用して大量のメモリを消費しようとしましたが、104個のプロセスを実行しておくこともできます。
  • また、すべての可能なIIS構成を確認しましたが、この問題に関連する設定が見つかりませんでした。

だから私は誰でもASP.NETアプリケーションでより多くのproceccesを開始する方法を知っているかどうか尋ねたいと思います。

誰かが私を助けることができたらとても感謝します。ありがとう!

+2

なぜ600プロセスを開始する必要がありますか?これは正直であると良い考えのようには聞こえません。 –

+0

@ JasonEvans、私は現在、大規模なサーバーのための最新のツールを実装しています。このサーバーは、接続されている各ユーザーのプロセスを作成します。私はlasttestツールで200人のvirtuellユーザーを生成しようとしましたが、およそ60人しか正しく動作できません。私はその後、サーバーのビビオウを追跡し、いくつかのプロセスが実行されていないか疑問に思っていました。これが私がこの小さなテストサーバーを実装し、そこに600のプロセスを開始した理由です。 –

答えて

0

ASP.NETでは、600(または何百もの何百もの)プロセスを実行しないことを強くお勧めします。 Aspnet_wp.exeプロセス上のリソースを実際に使用すると、IISボックスのパフォーマンスが低下する可能性があります。

デザインを再考する必要があります。

これは私の場合、私はあなたのために努力することができるASP.NETの外部で外部プロセスを作成することを検討します。たとえば、ファイルのファイルシステムフォルダを待つ(つまり、リッスンする)Windowsサービス(またはサーバー上で実行されている.NETコンソールアプリケーションのみ)を作成することができます。たとえば、ファイル名はstart.txtです。あなたのウェブサイトへのリクエストが行われたときにあなたが行うことができる作成されるべきである。そのサービスはあなたのために600のexeファイルを実行します。

私はlasttestに精通していないので、私の提案は適切ではないかもしれません。しかし、私はあなたが現在のデザインを使用して探しているものを達成するとは思わない。それはパフォーマンスを傷つけるでしょう、そして、実際には、私は実行中のプロセスの限界に達したことに驚くことはありません。私はAspnet_wp.exeで実行できるexeファイルの数を指すドキュメントは知らないが、ASP.NETチームがこれを試みることを誰も期待していなかった可能性が高いからだ。

+0

リリーフありがとう!あなたの提案はとても役に立ちます! 「Lastest」では、私は実際には「Stresstest」を意味しました。私はちょうどこれについて私のシェフと話し、彼らは後でサーバーを改善するでしょう。私たちは最近、多くの可能性のあるトリックを試しました。これまでのところ、IISの各アプリケーションプールは(少なくともWindows 7とWindows server 2008r2〜64bitでは)最大104個のプロセスを開始できます。 –

+0

私の答えがあなたに価値をもたらしたことをうれしく思っています。また、アプリケーションプールで104のプロセスを実行する詳細についても感謝します。私は何か新しい自分自身を学んだ:) –

関連する問題