@belyaevcyrill

Как предотвратить утечку памяти в MSSQL Server 2008 R2 SP3?

В компании для работы сервера 1С Предприятия 8.2.19.83 используется MSSQL Server 2008 R2 SP3. Баз достаточно много — начиная с Документооборота, заканчивая Кадрами.

Оба сервера (1С Предприятие и MSSQL) находятся на одном и том же физическом сервере.

Проблема в том, что за 1-2 полных рабочих дня сервер MSSQL "съедает" всю выделенную для него память. Такое чувство, что происходит утечка памяти.

Вот что показывает диспетчер задач:

135d8add54f146c1aa40269cbb710603.png
921e6fa1766f4b56ad7125b9dbda9a97.png

У сервера 64Gb RAM. Стоит Windows Server 2008 R2 Enterprise.

Максимальный размер памяти для MSSQL выставил в 38Gb:
04cac883e8264c4896f8cb48a1b084a3.png

Свойства кластера сервера 1С Предприятия:
94407476a3fd4596aaa777857fcc81da.png

Пользователей 1С Предприятия около 95. Среди них есть много тех, кто работает через терминальный доступ.

Что делать? Как предотвратить утечку? Помогите с советом. Спасибо.
  • Вопрос задан
  • 3546 просмотров
Решения вопроса 3
Jump
@Jump
Системный администратор со стажем.
Проблема в том, что за 1-2 полных рабочих дня сервер MSSQL "съедает" всю выделенную для него память.
Это разве проблема? Это нормальное поведение для MSSQL.

А вот то, что на одном сервере сервер БД, сервер 1с, и еще и терминальный сервер - это да, проблема.
Ответ написан
@denilenko
Подтверждаю слова АртемЪ: захапать все что есть, или до предела указанного в настройках, это нормальное поведение MS SQL Server'а (сам раньше этим озадачивался). Так что не волнуйтесь, это не баг, это фича.
UPD по поводу зависаний: опять же, одну из причин (нехватка ресурсов между программами) уже назвал АртемЪ, но может быть еще и другая. "Поиграйте" с количеством соединений на процесс в свойствах сервера 1С. У нас тоже со временем вдруг появлялись непонятные зависания и никто не мог нормально работать (и я тоже поначалу грешил на SQL-сервер). Помогло уменьшение количества соединений. Точно уже не помню (у нас уже 8.3, а там автоматическое управление процессами), но можно еще с количеством самих процессов поэкспериментировать, добавить резервный и т.п. (информации на эту тему полно в гугле).
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Полностью согласен с предыдущими ораторами.
Отъедать всю доступную память - нормальная политика MS SQL. У меня, например, вся память отъедается в течение получаса после запуска SQL.
Терминалу не место на сервере баз данных.
Вообще сервер баз данных плохо совмещается с другими ролями, т.к. при более менее приличной нагрузке, как вы сами заметили, SQL отъедает всю доступную память, кроме того в пиках обычно довольно высокая дисковая нагрузка что то же не комильфо для других ролей. А так же, если другие роли начнуть так же отъедать ресурсы - это очень плохо скажется на производительности SQL.
Если со временем SQL не займет вообще всю память, значит утечек нет.
Пока думаете над переносом терминала на другую железку, можно заняться стандартной оптимизацией базы: создать недостающие индексы, вычислить особо тормозные выборки и попробовать их оптимизировать, настроить регламентные задания (дефрагментация индексов, обновление статистики и т.п.), разнести на разные диски файл базы данных и лог файл.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы