У меня есть веб-сайт asp.net mvc, размещенный на Windows Server 2012r2 Standard, который использует KnockoutJS для отображения данных в сетке.Этот сервер предназначен для процесса, с которым у меня возникли проблемы - он не обслуживает другие запросы.
Для действия контроллера GetRecords выполняется «ajax-вызов».Это очень быстро возвращает данные для пары десятков записей.
Пользователь может вносить изменения в данные и отправлять на обновление.Код нокаута делает еще один вызов ajax, на этот раз публикуя записи.На этом этапе сайт «зависает» в течение длительного времени (более 10 минут), но он успешно завершается, и обновленная дата сохраняется в базе данных.Во время «зависания» центральный процессор рабочих процессов IIS колеблется около 50%.
Я пытаюсь выяснить, что вызывает задержку.Кажется, что задержка происходит до того, как будет достигнута первая строка кода действия контроллера.Я добавил в действие оператор трассировки и вижу, что после выполнения 1-й строки действие завершается в течение нескольких секунд.
Из диспетчера IIS я углубился в "Рабочий"Процессы "\" Текущие запросы "в то время, когда страница" зависла ", я вижу, что состояние указано как" ExecuteRequestHandler ", а имя модуля -" ManagedPipelineHandler ".Другие «текущие запросы» не отображаются.
Используя инструменты разработчика Chrome, я запечатлел json, публикуемый для обновления, его размер составляет около 4 МБ.
Я исключил проблему, вызванную пропускной способностью, потому что я протестировал браузер, работающий локально (на веб-сервере), и получаю такую же задержку.
Кроме того, когдаЯ размещаю такое же количество записей на одном и том же сайте, размещенном на моей виртуальной машине разработчика, после чего он работает нормально - завершает сквозную работу менее чем за 3 секунды.
Любое предложение, касающееся шагов, которые можно предпринять для повышения производительностиpost?
Я создал дамп процесса рабочего процесса IIS, когда он находится в состоянии «зависания», он доступен по адресу: onedrive link
Кажетсячто «Поток 28» вызывает проблему, поскольку значение «Время, проведенное в пользовательском режиме» превышает 2 минуты.Я запросил дамп процесса через 2 минуты после отправки http-запроса с веб-сайта.Пост в конце концов закончился нормально, примерно через 20 минут