Странное использование памяти в Windows Server 2008 R2

20

Я надеюсь, что кто-то может помочь. У нас есть машина с Windows Server 2008 R2 с 16 ГБ ОЗУ, которая постоянно чем-то съедает всю доступную память. Ничто в диспетчере задач или мониторе ресурсов не обнаруживает никаких процессов, использующих память объемом более 300 МБ ... но использование памяти на сервере составляет 15,7 ГБ.

https://i784.photobucket.com/albums/yy129/ThunderPeel2001/ram-usage.gif

Работают только SQL Server 2008 и IIS7.5 (с ASP.Net).

Примечание. Использование ОЗУ после перезагрузки начинается с низкого уровня и увеличивается. Примерно через неделю мы продолжаем обнаруживать себя в этой ситуации.

Как я могу узнать, что ест всю нашу память? :(

Джанго Рейнхардт
источник
1
Как именно вы «Ограничив использование оперативной памяти SQL Server (мин. / Макс.) До 13 ГБ, это не должно повториться». Я использую машину с Win 2008 R2 с SQL 2008 R2 и сталкиваюсь с той же проблемой.
Это настройка в SQL Server Studio. Удачи!
Джанго Рейнхардт

Ответы:

15

Это 64-битный сервер - у вас включена локальная политика блокировки страниц в памяти? SQL, вероятно, потребляет остальную часть вашей памяти. Если вы посмотрите на счетчики perfmon, то увидите распределение памяти.

Вот статья, которая объясняет это в глубине

Вы также можете просмотреть счетчики в SQL

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )
CPU_BUSY
источник
2
Это все объясняет. Использование памяти было «использовать все доступное» (т.е. 2000 ТБ), а страницы были заблокированы в ОЗУ, тогда не все имели доступ к ней, когда она использовалась. Теперь ограничение использования ОЗУ SQL Server (мин. / Макс.) До 13 ГБ не должно повториться. Теперь у меня есть несколько инструментов, чтобы следить за любыми изменениями. Спасибо за вашу помощь!
Джанго Рейнхардт
>> Теперь у меня есть несколько инструментов для отслеживания любых изменений. Какие инструменты вы использовали?
Дэвид Кристиансен
6

Быстрый тест: перезапустите SQL Server.
Еще один быстрый тест: перезапустите IIS.

Вы будете точно знать, является ли один из них виновником или вам нужно искать что-то еще.

Massimo
источник
Похоже, SQL был виновником!
Джанго Рейнхардт
3

Это может помочь использовать RamMap, чтобы увидеть, куда уходит ваша память.

Сергей
источник
1

Вы действительно испытываете какие-либо проблемы, связанные с памятью?

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

Если память просто заполняется, но у вас не возникает никаких проблем, тогда это просто кеш, выполняющий свою работу; память будет автоматически Выпущенный если и когда вы на самом деле нужно.

Если использование памяти превышает физический лимит и сервер останавливается, значит, вы испытываете некоторую утечку памяти и обязательно должны ее отладить.

Несколько интересных статей на тему «кеша»:

http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory -shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx

Massimo
источник
Ну, мы не могли установить какие-либо критические обновления Windows без перезагрузки сервера, потому что на нем не хватало оперативной памяти. Довольно смешно. Что бы это ни использовало, не хотел отдавать это.
Джанго Рейнхардт
0

Вы проверяли Perfmon (особенно счетчики SQL), как это было предложено кем-то из вашего другого потока?

mfinni
источник
1
Да, но «осмотреть Perfmon» сложнее, чем кажется.
Джанго Рейнхардт
0

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

Во-вторых, если это не сработало, используйте Process Explorer, чтобы лучше рассмотреть использование памяти. Перейдите в меню «Вид», затем выберите «Столбцы», «Память процесса» и проверьте параметры «Частные байты», «Виртуальный размер» и «Размер рабочего набора». Посмотрите, указывает ли это на то, что здесь винить.

Тогда решительным подходом будет попытка остановить сервисы. IIS, например, может быть полной памятью, если у вас неправильно настроены пулы приложений и веб-сады (их слишком много), так что это кандидат.

Удачи!

Максимус Минимус
источник