У меня есть виртуальная машина (64-разрядная версия Windows 2008 Server R2, работающая на vmware esxi 4) с 6 ГБ установленной оперативной памяти. Он сообщает об использовании памяти 95% и почти 0% ЦП. На этом сервере размещены некоторые службы WCF в IIS, и на нем установлена AppFabric, которая устанавливает собственный SQL Server 2008 R2 Express. В целом, довольно мало использования.
Если посмотреть на вкладку памяти монитора ресурсов, не видно очевидного процесса, потребляющего очень много памяти. Сумма столбца фиксации для всех перечисленных процессов составляет около 1,5 ГБ. Итак, хотя машина сообщает об использовании 95% (более 5 ГБ), я не могу понять, что ее использует.
Посмотрев на выполнение, я добавил несколько счетчиков в объект Process, и самая большая аномалия, которую я обнаружил, заключалась в том, что sqlserver имел количество виртуальных байтов больше 6 ГБ, но его личное количество байтов составляет 125 МБ.
Доказывает ли такое большое количество виртуальных байтов, что sql является источником использования большой памяти? Что могло вызвать этот всплеск? Или я должен искать что-то еще, чтобы изолировать пожирателя памяти?
Если вы не установили максимальное значение памяти для экземпляра SQL Server, он будет использовать как можно больше системной оперативной памяти для кэширования. Вероятно, это источник вашей проблемы.
Если вы не установите ограничение на объем памяти, который может иметь SQL, он потребует все, что может. Он показывает, что использование памяти настолько велико, потому что SQL забрал всю эту память, что не означает, что он активно использует эту память для запросов. Вместо этого он использует эту память для хранения страниц, планов выполнения и многих других полезных вещей. Чтобы увидеть, что SQL активно делает с памятью, вам нужно запустить это. select * from sys.dm_exec_query_memory_grants Все, что вам нужно сделать, это уменьшить объем оперативной памяти, который может использовать SQL, имейте в виду, что он немного превысит лимит, установленный вами для окон RAM, необходимого для запуска SQL.
Надеюсь, это поможет.