Узкое место рабочего процесса IIS 7, большое количество ожидающих запросов в пуле приложений ASP.NET 3.5 + 2.0


Я использую ASP.NET 2.0, .NET 2.0 Framework и IIS 7. Я вижу, что под параметром "рабочий процесс" появляется большая очередь "запросов". Записанные состояния кажутся Authenticate Request и Execute Request Handles больше, чем что-либо другое.

Я изменил aspnet.config в C:WindowsMicrosoft.NETFramework64v2.0.50727 (32-битный путь и 64-битный путь), чтобы включить:

maxConcurrentRequestsPerCPU="50000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="50000"

Я изменил machine.config в C:WindowsMicrosoft.NETFramework64v2.0.50727CONFIG (32-битный и 64-битный путь), чтобы включить:

autoConfig="false"
maxIoThreads="100"
maxWorkerThreads="100"
minIoThreads="50"
minWorkerThreads="50"
minFreeThreads="176"
minLocalRequestFreeThreads="152"

И все же я понимаю эту проблему.

Проблема проявляется в виде большого количества запросов в очередь рабочего процесса.

Число текущих подключений к веб-сайту отображается 500, когда возникает эта проблема. Я не думаю,что видел одновременные соединения более 500 без этой проблемы.

Веб-приложение замедляется по мере блокировки запросов.

Обновление пула приложений разрешается на некоторое время (как и ожидалось) по мере распределения нагрузки между двумя пулами.

Пул приложений, о котором идет речь, фиксированный запрос был настроен на обновление 50000.

Примечание: .NET 3.5 framework использует 2.0 framework appnet и файлы конфигурации машины, я полагаю.

Ресурсы сервера (процессор, ОЗУ)используются не в полной мере.
3 4

3 ответа:

Могу ли я предложить вам взглянуть на материалы на сайте Тесс Феррандес если он сломан, исправьте его вы должны.

То, что вы хотите сделать, - это захватить дамп рабочего процесса с помощью ADPlus в то время, когда вы сталкиваетесь с большим количеством запросов в очереди запросов и когда приложение начинает останавливаться.

Как только вы захватили эту свалку, вы хотите загрузить ее в WinDBG+SOS и начать выслеживать преступника.

Тесс имеет большую серию лабораторий о как использовать эти инструменты с большим эффектом:

.NET Debugging Demos-информация и инструкции по установке

Если вы можете, то вы также можете прикрепить профилировщик к приложению (например, профилировщик производительности RedGate ), чтобы попытаться обнаружить первопричину.

Следуйте статье KB http://support.microsoft.com/kb/821268 и обновите меня, если вы все еще сталкиваетесь с этой проблемой.

Можно также попробовать трассировку FREB в IIS 7. http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/

Закончилось увеличением рабочих процессов с 1 до 2 (web garden). Проблема не повторилась с тех пор, хотя were используют сеансы, но в течение месяца не было никаких сообщений о проблемах сеанса от конечных пользователей.

ОТРЕДАКТИРОВАНО, ЧТОБЫ ДОБАВИТЬ:

Конкретная проблема была связана с генерацией чрезвычайно больших отчетов CSV, которые обрабатываются на стороне сервера рабочего процесса, а не ошибка, просто так, как это работает. HTML отчеты в порядке, XML-преобразование передается клиенту сторона.

Разделение рабочих процессов решило проблемы до тех пор, пока преобразование xml на стороне разъединения в csv-файл не будет передано процессу добавления, таким образом, устраняя любое влияние со стороны других пользователей. Все сводилось к размеру файлов / количеству строк, с которыми мы работали при создании отчетов CSV.