Узкое место рабочего процесса 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 ответа:
Могу ли я предложить вам взглянуть на материалы на сайте Тесс Феррандес если он сломан, исправьте его вы должны.
То, что вы хотите сделать, - это захватить дамп рабочего процесса с помощью ADPlus в то время, когда вы сталкиваетесь с большим количеством запросов в очереди запросов и когда приложение начинает останавливаться.
Как только вы захватили эту свалку, вы хотите загрузить ее в WinDBG+SOS и начать выслеживать преступника.
Тесс имеет большую серию лабораторий о как использовать эти инструменты с большим эффектом:
Если вы можете, то вы также можете прикрепить профилировщик к приложению (например, профилировщик производительности 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.