Как повысить приоритет процессов IIS (для пула приложений w3wp и iis)?

Существует приложение ASP.NET с набором веб-служб и приложение WinForms, которое вызывает эти веб-службы.

W3wp.exe (который обрабатывает вызовы asmx) запускает специальные процессы, которые выполняют действительно «сложные» задания (например, архивирование, синтаксический анализ xml и т. Д.). Это долгая история, почему нам нужно делать это в отдельных процессах и почему мы не запускаем этот код внутри w3wp.exe - здесь это не имеет значения. Так должно быть.

Если несколько запросов пришли одновременно от многих пользователей, таких процессов может быть 30-40, и они потребляют ресурсы ЦП. Они потребляют его так много, что для самого IIS почти не остается ресурсов процессора.

Итак, проблема следующая: когда следующие HTTP-запросы поступают в этот IIS, IIS не может их обработать: он не может даже передать их в w3wp.exe, потому что сервер "взорван". И, как В результате в пиковое время 30 пользователей выполнили свои запросы, а 31-й пользователь получает исключение WebException в клиенте WinForms «истекло время ожидания».

Я нашел в Интернете много статей, в которых объясняется, как настроить IIS, но никто не принимает во внимание тот факт, что ДРУГИЕ процессы и / или приложения могут работать на одном компьютере. И никто не говорит, что делать, чтобы у IIS был более высокий приоритет.

Итак, вопрос следующий: есть ли способ «объяснить» IIS, что он должен по умолчанию запускать пул приложений (svchost.exe) и w3wp.exe с более высоким приоритетом?


person Ihor B.    schedule 15.11.2012    source источник
comment
Как насчет запуска специальных процессов с более низким приоритетом?   -  person Andrew Morton    schedule 15.11.2012
comment
Похоже, пора добавить больше оборудования.   -  person AaronS    schedule 16.11.2012
comment
@AaronS это больше похоже на плохой дизайн приложения. Если на сервере происходит переполнение из-за одновременного выполнения 30 действий, то задачи должны распределяться по времени. Вы можете легко разрабатывать приложения ASP.NET, которые выполняют задачи асинхронно и сообщают пользователю, когда фоновые задачи выполнены.   -  person Dai    schedule 16.11.2012
comment
почему люди делают выводы, НЕ зная домена?   -  person Ihor B.    schedule 16.11.2012
comment
долго объяснять, почему код, выполняющий некоторую работу, выполняется в этих отдельных процессах. это связано с COM (один объект Microsoft't COM), который не освобождает память и не работает нормально в случае, если 2 экземпляра этого объекта работают в ОДНОМ процессе. По этой причине код не работает внутри w3wp.exe и помещается в отдельный процесс. Но в любом случае, если бы этот код работал в w3wp или нет в w3wp - он сильно бомбил бы сервер - и процессор, и жесткий диск. Так что вопрос более общий: что делать с IIS, если что-то бомбит сервер?   -  person Ihor B.    schedule 16.11.2012
comment
Если вы увеличите приоритет IIS, вам, вероятно, придется повысить приоритет многих других процессов на сервере. Альтернативой является снижение приоритета ресурсоемкого процесса, чтобы IIS (и остальная часть системы) могли нормально функционировать. Можете ли вы поместить ресурсоемкий процесс на другой компьютер или, как подразумевал Дай, поставить задачи в очередь и не обрабатывать так много одновременно, чтобы компьютер зависал?   -  person Andrew Morton    schedule 16.11.2012
comment
если мы уменьшим приоритет этих специальных процессов, возникает другая проблема: когда w3wp.exe и этот процесс обмениваются данными посредством удаленного взаимодействия, вызовы удаленного взаимодействия часто прерываются, за исключением того, что канал IPC не работает или что-то в этом роде. И я не знаю почему. Скорее всего, это из-за ошибок Microsoft .NET в реализации удаленного взаимодействия. Но процесс должен иметь нормальный приоритет, чтобы успешно подключиться к нему через удаленное взаимодействие. Таким образом, выход - повысить приоритет процесса IIS ИЛИ переработать все приложение, чтобы перенести эту особую работу на другой сервер.   -  person Ihor B.    schedule 20.11.2012
comment
Итак, вопрос, как повысить приоритет IIS, все еще остается.   -  person Ihor B.    schedule 20.11.2012


Ответы (1)


Я столкнулся с этой проблемой в Windows Server 2008 r2. У меня была служба Windows (которая использовала параллельную обработку), которая сильно раздувала мой процессор и ничего не оставляла для IIS и SQL Server.

Поэтому я установил привязку к процессору для службы Windows, чтобы использовать только определенные процессоры. Вы попадаете в Диспетчер задач -> Процесс RightClick -> Установить соответствие.

Это оставило другие процессоры свободными для использования для SQL и IIS.

В некоторой степени это снизило производительность службы Windows, которая теперь работала с ограниченным набором процессоров, но это не имело большого значения.

person Abdul Rehman Sayed    schedule 27.12.2016