На сервере базы данных, который я использую, запущено 6 разных экземпляров SQL Server. Имеет 48 ГБ оперативной памяти. И один из них потребляет более 10 ГБ оперативной памяти, общий объем на данный момент составляет 20 ГБ. Потребление оперативной памяти постоянно растет. За пару дней до этого он использовал более 40 ГБ ОЗУ, и сервер реагировал очень медленно. Приложение показывает проблемы сбоя при сохранении данных.
Поэтому я перезапустил службы SQL Server.
Как только сервисы были перезапущены, их использование сократилось до 4 ГБ, но сейчас оно растет. И я обеспокоен тем, что он увеличится до 40 ГБ за 4 или 5 дней и замедлит работу сервера.
Перезапуск службы не является хорошим вариантом, я думаю.
Я также нашел из разных источников, что мы можем установить максимальный размер использования памяти для SQL Server. И я не совсем уверен, поможет это или нет. Я не могу проверить это, потому что сервер использует производственную базу данных, и будет риск, если служба остановится во время изменения параметра в SQL Server.
Может ли кто-нибудь помочь с этой проблемой?
Ответы:
Это по замыслу. Предполагается, что SQL Server использует всю доступную память, поскольку он хранит все больше и больше данных в памяти, так что ему не нужно возвращаться на диск, чтобы получать одну и ту же память снова и снова.
Если вам нужно ограничить объем памяти, который используется одним экземпляром SQL Server, вы можете сделать это в SQL Server Management Studio, щелкнув правой кнопкой мыши имя экземпляра в обозревателе объектов и выбрав свойства. Затем выберите вкладку памяти и установите максимальный объем памяти, который SQL Server будет разрешено использовать. Теперь это не будет ограничивать все аспекты SQL Server таким объемом памяти. Это только контролирует пул буферов и кэш плана выполнения. Такие параметры, как CLR, полный текст, фактическая память, используемая exe-файлами SQL Server, агент SQL, расширенные хранимые процедуры и т. Д., Не контролируются этим параметром. Однако этим другим вещам, как правило, не нужно столько памяти, это буферный пул и кэш плана выполнения, которые требуют большую часть памяти.
Если вы установите этот параметр для одного экземпляра, вы захотите установить его для всех экземпляров, чтобы они не наступали друг на друга.
источник