Системный файл подкачки использует все доступное пространство, выделенная физическая память не используется
Эта проблема:
Что-то на нашем виртуализированном сервере баз данных использует огромное количество нашего файла подкачки. Мы заметили это около недели назад, когда диск ОС вырос с 30+ ГБ свободного места до примерно 500 КБ свободного места за день. Я нашел использованное пространство в виде огромного файла подкачки (75+ ГБ). Я выключил управляемый системой файл подкачки и разбил его на равные части на 4 логических диска (на 4 разных физических массивах). Вместо того, чтобы исчерпать пространство на жестком диске и ошибки памяти, мы теперь сталкиваемся только с ошибками памяти, несмотря на то, что на сервере имеется несколько гигабайт неиспользуемой оперативной памяти.
Я не знаю, как найти точную причину, но я запустил несколько инструментов, которые, как я надеялся, прояснили источник проблемы, но ничего не было достаточно очевидно для меня.
Детали:
- Виртуализированный Windows Server 2008 R2 с запущенным на нем Sql Server 2008
- 32 ГБ статически выделенной оперативной памяти, выделенной виртуальной машине
- Sql Server был настроен на использование 18 ГБ
- Небольшой экземпляр MySql также работает
- query_cache_limit установлен в 8 МБ
- query_cache_size установлен в 128 МБ
- имеет роль контроллера домена и является глобальным каталогом (да, я знаю, что это не должен быть контроллер домена, но у нас ограниченные ресурсы)
- Pagefile разбит на 4 части на 4 логических дисках, каждый логический диск имеет свой собственный виртуальный жесткий диск в своем собственном физическом массиве на виртуальном сервере хоста
- Для файла подкачки установлено значение не менее 8192 МБ, не более 12288 МБ для каждой части
- Исходный файл страницы был 48 ГБ и динамически расширялся
- Потоки и процессы остаются примерно одинаковыми во время проблемы, и пока проблема не возникает - Потоки: ~720-750, Процессы: ~62
Вещи, которые я пробовал:
- Ограничение Sql Server меньшим объемом оперативной памяти - 14 ГБ - без эффекта
- остановка и отключение службы MySql5.5 с последующим перезапуском
- Увеличение Sql Server для использования большего объема оперативной памяти - 28 ГБ - без эффекта
- запуск RAMMap от Sysinternals - ничего необычного не обнаружилось
Я не могу окончательно остановить службу MySql, а служба Sql Server должна продолжать работать в дневное время. Кажется, что наблюдается всплеск использования памяти или файла подкачки, когда удаленное взаимодействие с сервером невозможно даже из-за нехватки ресурсов, и вскоре после этого я снова могу подключиться. Через несколько минут я даже не смогу открыть блокнот или диспетчер задач. Многочисленные ошибки появляются на экране, связанные с нехваткой памяти (что мне не удобно, поскольку проблема не возникает в данный момент, но я буду обновлять с различными ошибками, когда они возникают).
Все время, когда это происходит, TaskManager говорит, что есть несколько ГБ свободной физической памяти (от 12 до 2 ГБ, в зависимости от памяти, выделенной для Sql Server)
Я подозреваю, что в этом изначально могла сыграть роль одна вещь: у одного массива на хост-сервере был сбой диска, а у другого был прогнозируемый сбой (raid5, 3 диска), поэтому, если записи были отложены, я подумал, что они могут накапливаться. в памяти или в файле подкачки.
Могу ли я сначала попытаться определить, насколько интенсивно используется файл подкачки с помощью списка процессов, показывающих, сколько файлов подкачки и физической памяти они используют в разбивке? Или какой-нибудь способ сказать, является ли использование этой памяти симптомом более серьезной проблемы с аппаратным обеспечением или ОС?