У нас есть выделенная машина SQL Server 2008 R2, которая испытывает некоторые странные проблемы с памятью. Сама машина имеет много ресурсов, включая два четырехъядерных процессора, 16 ГБ ОЗУ и 64-разрядную Windows Server 2008 R2 Enterprise (это Dell PowerEdge 2950) ,
Странная проблема заключается в том, что система сообщает о 82% используемой памяти, но sqlservr.exe сообщает об использовании только 155 МБ. Причина, по которой я подозреваю SQL Server, заключается в том, что, если я перезапущу процесс sqlservr.exe, потребление памяти нормализуется на некоторое время.
У кого-нибудь есть идеи о том, как я могу начать отслеживать эту проблему?
Спасибо Джейсон
sql-server-2008-r2
memory
process
typefragger
источник
источник
Ответы:
Вы не получите истинную картину использования памяти в диспетчере задач, если учетная запись, под которой работает служба, имеет блокировку страниц в привилегии памяти (редактирование: согласно комментарию / ссылке Марка Расмуссена). Чтобы определить, сколько памяти используется, вы можете посмотреть:
Я не могу вспомнить, если есть DMV или комбинация, которая даст вам общее выделение памяти, но следующее покажет большую часть этого.
Вторым наиболее интересным обычно является распределение пула буферов по базе данных. Здесь будет использоваться львиная доля, и может быть полезно понять, какие из ваших баз данных являются самыми крупными потребителями.
источник
В недавней статье от нашего собственного Brent Ozar рассматривается этот случай, когда диспетчер задач неправильно показывает память, потребляемую SQLServer и его дополнительными службами. Вы можете найти его здесь: Руководство системного администратора по памяти Microsoft SQL Server .
Цитата: « Почему SQLServer.exe не использует много памяти?
Когда вы подключаетесь к серверу и просматриваете диспетчер задач, использование Mem в sqlservr.exe всегда выглядит странно. Это не ошибка SQL Server. Диспетчер задач - грязный, грязный лжец. (Я знаю, это звучит так, как будто парень SQL перекладывает вину, но потерпите меня на секунду.) На 64-битных блоках это число несколько точнее, но на 32-битных блоках оно просто совершенно не основано , Чтобы действительно получить точную картину того, сколько памяти использует SQL Server, вам нужен инструмент, такой как Process Explorer, и вам нужно идентифицировать все процессы SQL Server. На сервере, который я показываю справа, есть два экземпляра SQL Server (показаны sqlservr.exe), а также средства резервного копирования агента SQL Agent, SQL Browser и SQL Server. Нет ничего необычного в том, что службы SQL Server Analysis Services, службы Integration Services и службы Reporting Services также работают на одном сервере - все они потребляют память.
Так сколько памяти использует SQL? Я сделаю это легко для вас. SQL Server использует всю память. Период «.
Поэтому я бы посоветовал вам попробовать запрос Марка и использовать лучший инструмент для отчета о памяти. Или просто доверьтесь Perfmon сообщить память, а не диспетчер задач.
источник
Объем памяти, используемый SQL, как показано в диспетчере задач, будет в основном соответствовать параметру max-memory. Вот как работает настройка min / max:
Когда SQL-сервер запускается, он начинает загружать память до значения минимальной памяти. По мере того, как ваш SQL-запрос будет увеличиваться, SQL начнет использовать больше памяти, вплоть до значения max-memory. Затем память остается в этой (максимальной) точке, даже когда использование SQL снижается. Это создает впечатление, что SQL выполняет огромные задачи и использует столько памяти. На самом деле эта память зарезервирована SQL.
Когда на сервере возникает нехватка памяти, отличная от SQL, SQL освобождает память до минимальной точки установки памяти. Вот как используются настройки памяти. Вы можете использовать сценарии Марка, чтобы увидеть, как SQL использует эту память.
источник