Запросы веб-API в очереди навсегда на IIS (в состоянии: ExecuteRequestHandler)

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

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

Все они находятся в состоянии ExecuteRequestHandler

Есть идеи, где мне продолжать копать?

2 ответа

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

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

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

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

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

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

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

Есть много блогов по использованию windbg. Вот один пример. Большим ресурсом по анализу подобных проблем является блог Тесс Феррандез.

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

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

Удачи.

Другие вопросы по тегам