2016-06-30 4 views
3

В настоящее время я испытываю некоторые зависания в производственной среде, и после некоторого расследования я вижу много запросов, стоящих в очереди в рабочем процессе пула приложений , Общим является то, что каждый запрос, который находится в очереди в течение длительного времени, представляет собой запрос веб-api, я использую как MVC, так и Веб-API в приложении.Веб-Api Запросы Очередь навсегда в IIS (в состоянии: ExecuteRequestHandler)

Запросы помещаются в очередь в течение примерно 3 часов, когда пул приложений перерабатывается, они немедленно запускают очередность.

Они все в ExecuteRequestHandler государственного

Любые идеи, где я должен продолжать копать?

+0

Вы когда-нибудь решали эту проблему? У меня есть тот же самый – wainy

ответ

0

Это действительно длинный снимок без непосредственного доступа к вашей системе, но попробуйте проверить сопоставления обработчиков в менеджере IIS Manager для вашего WebApi. Сравните его с настройками IIS вашего DEV или любого другого Env, где он работает.

ЕСЛИ это не проблема, тогда выполните сравнение всех других параметров IIS для этого приложения.

Удачи.

2

Ваши запросы могут быть застопорился по целому ряду причин:

  • они ждут включения/O операции, например, базы данных ввода, вызова веб-службы
  • они перекручивание или при выполнении операций на большом наборе данных
  • ресурсоемкие операции
  • некоторая комбинация выше

для того, чтобы узнать, что ваш REQ uests делают, начиная с получения URL-адресов запросов, занимающих много времени.

Вы можете сделать это в CMD строке следующим образом

c:\windows\system32\inetsrv\appcmd list requests 

Если его не видно из URLs и глядя на код, вы должны сделать процесс дамп w3wp.exe на сервере. После того, как у вас есть свалка процесса, вам нужно будет загрузить его в windbg, чтобы проанализировать, что занимает все циклы процессора. Покрытие от WinDbg довольно большой, но вот вкратце то, что вам нужно сделать:

  • нагрузки, Dll SOS (управляемые расширения отладки)
  • вызова беглой команды
  • , чтобы получить список длинного запущенных потоков погружения! в длинную рабочую нить , выбрав ее и позвонив! clrstack command

Существует много блогов об использовании windbg. Вот пример one. Огромный ресурс по анализу этих типов проблем - это blog Тесс Феррандез.