Назад | Перейти на главную страницу

Http Post - долгая задержка в состоянии ExecuteRequestHandler

У меня есть веб-сайт asp.net mvc, размещенный на Windows Server 2012r2 Standard, который использует KnockoutJS для отображения данных в сетке. Этот сервер предназначен для процесса, с которым у меня возникли проблемы - он не обслуживает никаких других запросов.

Вызов ajax выполняется для действия GetRecords контроллера. Это очень быстро возвращает данные для пары десятков записей.

Пользователь может вносить изменения в данные и отправлять их на обновление. Код нокаута делает еще один вызов ajax, на этот раз отправляя записи. На этом этапе сайт «зависает» на долгое время (более 10 минут), но завершается успешно, и обновленная дата сохраняется в базе данных. Во время «зависания» загрузка ЦП для рабочих процессов IIS колеблется около отметки 50%.

Я пытаюсь выяснить причину задержки. Кажется, что задержка происходит до того, как будет достигнута первая строка кода действия контроллера. Я добавил к действию операторы трассировки и вижу, что после выполнения первой строки действие завершается в течение нескольких секунд.

В диспетчере IIS я углубился в «Рабочие процессы» \ «Текущие запросы», пока страница «зависла», я вижу, что состояние указано как «ExecuteRequestHandler», а имя модуля - «ManagedPipelineHandler» . Другие "Текущие запросы" не отображаются.

Используя инструменты разработчика Chrome, я захватил json, который публикуется для обновления, его размер составляет около 4 МБ.

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

Есть ли какие-либо предложения по изменениям конфигурации, которые я могу внести в IIS для повышения производительности публикации?