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

Утечка памяти в 64-разрядной версии Windows Server 2008 R2

У меня проблема на одном из офисных серверов. Это виртуализированный сервер Windows 2008 R2 с 6 ГБ оперативной памяти. У него есть только Microsoft SQL Server (максимальный размер памяти = 3 ГБ) и просто программное обеспечение, которое не использует более 1 ГБ ОЗУ. Однако оперативная память сервера почти заполнена, и, глядя на процессы в диспетчере задач, они, кажется, не подводят итоги. Я установил RamMap, но не могу легко его интерпретировать, есть ли какие-то «высокие ценности», которые вы можете определить?

Что ж, вижу ~ 3,2 гигабайта памяти Driver Locked, что сразу выделяется как подозрительное.

Этот вид памяти, память, заблокированная драйвером, - это память, заблокированная драйвером режима ядра. Обычно с целью передачи маленький объемы данных, обычно для короткая периоды времени.

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

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

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

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

Драйверы обычно выделить память, которая «помечена» трех- или четырехсимвольным тегом, который дает подсказку о том, какой драйвер был ответственен за выделение.
poolmon.exe, часть Windows SDK / DDK, может помочь в диагностике.

Как я уже сказал, дикая догадка, но это лучшее, что я могу сделать с имеющимися у меня данными.

Что ж, у меня есть все мыслимые версии SQL Server локально с 2005 по 2016 год, и я не видел утечек памяти размером с 100% фактически используемой памяти. Посмотри, есть ли у тебя Включена динамическая память для вашей виртуальной машины.

Driver Locked фигура, на которой вам следует сосредоточиться. В вашем конкретном случае Driver Locked вероятно, один из драйверов Hyper-V, который заблокировал всю неиспользуемую память (назначенную виртуальной машине, но не используемую ею atm), поэтому он может «передать ее» какой-либо другой виртуальной машине, настроенной с динамической памятью, или даже хост-ОС, в зависимости от того, что нужно это на данный момент. Вы можете проверить это, открыв какой-нибудь большой файл или приложение, интенсивно использующее память, внутри этой виртуальной машины - память DriverLocked должна уменьшиться при увеличении какой-либо другой метрики. по моему мнению это не должно вызывать беспокойства, если вы не выделяли слишком много памяти для всех виртуальных машин.