2016-05-10 6 views
0

У меня есть сервер signalr, который размещен в 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."; 
     } 

Однако, когда я называю эту функцию в клиенте я получаю исключение whiling убивает процессы:

Обрабатывать 104 не может быть убит: Die Anforderung Канна Nicht verarbeitet Верден, да дер Prozess beendet Würde (The запрос не может быть продолжен, потому что процесс уже завершен.)

Кажется, что я могу поддерживать только 104 процесса. Остальные заканчиваются сразу же после старта.

  • Я пробовал то же самое в консольном приложении, и все процессы можно запустить и убить.
  • Я попытался использовать много памяти с помощью другого приложения, и я мог бы также запустить 104 процесса.
  • Я попытался использовать много памяти с помощью другого приложения, и я мог бы также запустить 104 процесса.
  • Я также проверил все возможные настройки IIS, и я не смог найти никаких настроек, связанных с этой проблемой.

Поэтому я хотел бы спросить, знает ли кто-нибудь, как начать больше procecces в приложении ASP.NET.

Буду очень признателен, если кто-то может мне помочь. Благодаря!

+2

Зачем вам нужно запускать 600 процессов? Это звучит неплохо, если честно. –

+0

@JasonEvans, я в настоящее время реализую инструмент lasttest для большого сервера. Этот сервер создаст процесс для каждого пользователя, подключенного к нему. Я попытался создать 200 пользователей virtuell в инструменте lasttest, и только около 60 могут работать исправно. Затем я отслеживал бобин сервера и сомневался, что некоторые процессы не запущены. Именно по этой причине я реализовал этот небольшой тестовый сервер и запустил в нем 600 процессов. –

ответ

0

Я настоятельно рекомендую вам не выполнять 600 (или несколько сотен) процессов под ASP.NET. Вы действительно будете напрягать ресурсы в процессе Aspnet_wp.exe, что может повредить производительность окна IIS.

Вам нужно передумать дизайн.

Если бы это был я, я бы подумал о создании внешнего процесса за пределами ASP.NET, который мог бы сделать тяжелую работу для вас. Например, возможно, вы можете создать службу Windows (или даже просто консольное приложение .NET, запущенное на сервере), которое ждет (то есть слушает) в папке файловой системы для файла (вы можете назвать файл чем угодно, например start.txt) который вы можете создать, когда будет сделан запрос на ваш сайт. Эта служба затем выполнит 600 exe-файлов для вас.

Я не знаком с lasttest, поэтому мое предложение может быть недостаточно. Тем не менее, я не верю, что вы достигнете того, что ищете, используя свой текущий дизайн. Это повредит производительность, и на самом деле я не удивлен, что достигнут предел текущих процессов. Я не знаю никакой документации, которая указывает на то, сколько exe-файлов вы можете запустить в Aspnet_wp.exe, но это, вероятно, потому, что команда ASP.NET никогда не ожидала, что кто-нибудь попытается это сделать.

+0

Спасибо за возвращение! Ваше предложение очень полезно! С «Lasttest» я имел в виду фактически «Stresstest». Я просто поговорил с моим шеф-поваром об этом, и они улучшат Сервер позже. В наши дни мы опробовали множество возможных трюков, и мы до сих пор заключаем, что каждый пул приложений в IIS может запускать максимум 104 процесса (по крайней мере, в Windows 7 и на сервере Windows 2008r2-64bit). –

+0

Я рад, что мой ответ дал вам некоторую ценность. Также спасибо за подробную информацию о запуске 104 процессов в пуле приложений. Я узнал что-то новое сам :) –