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

VMWare SQL 2008 R2 Windows 7 Высокое использование памяти

У меня 64-разрядная версия Windows 7 установлена ​​на виртуальной машине, на которой работают SQL Server 2008 R2 и IIS7. Сам сервер имеет 12 гигабайт памяти и оснащен двухъядерным процессором Intel Xeon @ 2,50 ГГц.

Проблема (я не совсем уверен, действительно ли это проблема) в том, что диспетчер задач постоянно показывает мне 8,50 ГБ используемых, в то время как ни один процесс не потребляет такой объем памяти.

Я посмотрел на этот вопрос, который говорил о выделенной памяти для заблокированных страниц sql. Однако я обнаружил, что эти значения нормальные - около 85 МБ. Вот скриншот команды

select * from sys.dms_os_process_memorys

Однако на основе приведенного выше изображения я также вижу total_virtual_space_kb около 8,50 ГБ. Наконец, я запустил RamMap, который показывает мне, что используется около 8,50 ГБ «Драйвер заблокирован». В другом месте предполагалось, что эта память, "заблокированная драйвером", используется VMWare.

У меня есть несколько вопросов:

1) Действительно ли эта память потребляется или при необходимости она будет передана другому процессу? Я заметил, что сервер заметно медленный, поэтому мне интересно, связано ли это с этим. Далее я обычно OutOfMemoryExceptions выбрасывается моими процессами asp.net.

2) Кто выделяет / использует эту память? SQL или VMWare?

3) Есть ли способ решить эту проблему?

Любая помощь приветствуется.

Я подозреваю, что это результат действия «воздушного шара» драйвера гипервизора (ESX / i). Драйвер балуна работает через инструменты VMware, запрашивая определенный объем памяти у гостевой ОС, не используя его в гостевой ОС. Это позволяет гипервизору использовать память в другом месте.

Раздувание обычно хорошо по ряду причин, но с MSSQL это, как правило, немного хлопотно, потому что движок SQL сам по себе очень хорош в управлении памятью.

Вот еще немного информации по этому поводу, которая может объяснить лучше, чем я:

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

Перейдите в настройки vm, вкладка ресурсы. выберите память и проверьте ограничение.

Для SQL Server сначала необходимо ограничить использование памяти. Лучший способ узнать, сколько памяти действительно нужно вашему SQL-серверу, - использовать perfmon:

Перед уменьшением максимального значения памяти сервера используйте системный монитор для проверки объекта производительности SQLServer: Buffer Manager во время нагрузки и запишите текущие значения счетчиков «Украденные страницы» и «Зарезервированные страницы». Эти счетчики сообщают о памяти как о количестве страниц размером 8К. max серверная память должна быть установлена ​​выше суммы этих двух значений, чтобы избежать ошибок нехватки памяти. Приблизительное значение минимального допустимого максимального размера памяти сервера (в МБ) составляет ([Украденные страницы] + [Зарезервированные страницы]) / 100.

Источник: TechNet (http://technet.microsoft.com/en-gb/library/ms178067(SQL.90).aspx)