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

Почему RDP зависает на Windows Server 2008 R2 на виртуальной машине при высокой нагрузке?

Мы заметили проблему, при которой сеансы удаленного рабочего стола на сервере зависают, когда сервер имеет высокую загрузку процессора.

Окружающая среда:

Подключение RDP к серверу работает нормально. Когда сервер загружается, происходит следующее:

Нагрузка в этом сценарии обычно состоит из того, что процесс A выполняет последовательное (без потоков) сочетание вычислений и вызовов процесса B.При получении такого вызова процесс B обычно выполняет вызов базы данных, за которым следуют некоторые вычисления, а затем возвращает результат процессу. А.

В удаленном диспетчере процессов мы можем подтвердить, что процессы A, B и SQL Server вместе занимают 100% ЦП, но из-за последовательных вызовов между процессами на самом деле никогда не должно быть более одного процесса, готового к запуску в любой момент. во время. Эти процессы являются службами Windows и никак не взаимодействуют с графическим интерфейсом пользователя.

Это похоже на то, что Windows полностью лишает GUI-компонент циклов ЦП, когда другие процессы вызывают нагрузку.

Я провел несколько экспериментов, чтобы проверить - например, если я запустил три копии цикла занятости на своем ноутбуке, каждая из них будет занимать 33% ЦП, итоговое значение будет указано как 100%, но графический интерфейс Windows в целом по-прежнему будет полностью реагировать.

Что заставляет графический интерфейс сервера так зависать под нагрузкой и что можно сделать, чтобы этого не произошло?

VM имеет 6 ГБ ОЗУ, SQL Server ограничен 2 ГБ ОЗУ, другие задействованные службы обычно меньше 200 МБ каждая. Так что это не похоже на истощение памяти.

Службы работают с приоритетом "Нормальный", но я также снизил их до "Ниже нормального" без каких-либо реальных изменений в поведении.

Обновление 1

В попытке сузить проблему я пробовал это: