Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:maximum-and-minimum-server-memory-sql-server-options

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:maximum-and-minimum-server-memory-sql-server-options [13.02.2019 11:03] – создано Алексей Максимов1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:maximum-and-minimum-server-memory-sql-server-options [13.03.2023 15:28] (текущий) Алексей Максимов
Строка 1: Строка 1:
 ===== Настройка выделения памяти опциями "Maximum server memory" и "Minimum server memory" ===== ===== Настройка выделения памяти опциями "Maximum server memory" и "Minimum server memory" =====
  
-Учитывая то, что требуется отдельный объём ОЗУ для работы самой ОС и инфраструктурных приложений, таких как всевозможные агенты мониторинга и управления, антивирусного ПО и т.п., крайне желательно задавать верхний порог потребления памяти процессом экземпляра SQL Server. В противном случае, при хорошей нагрузке на БД, сервер может со временем вычерпать всю доступную память и нарушить работу других приложений.+{{:1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:pasted:20190417-165901.png }} Учитывая то, что требуется отдельный объём ОЗУ для работы самой ОС и инфраструктурных приложений, таких как всевозможные агенты мониторинга и управления, антивирусного ПО и т.п., крайне желательно задавать верхний порог потребления памяти процессом экземпляра SQL Server. В противном случае, при хорошей нагрузке на БД, сервер может со временем вычерпать всю доступную память и нарушить работу других приложений. 
 + 
 +\\ 
 +==== Опция Maximum server memory ====
  
 Принцип расчёта опции **Maximum server memory** возьмём из статьи [[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Server Memory Server Configuration Options]] Принцип расчёта опции **Maximum server memory** возьмём из статьи [[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Server Memory Server Configuration Options]]
Строка 18: Строка 21:
 У каждой версии ОС есть минимальные требования к ОЗУ, но они более, чем скромные. У каждой версии ОС есть минимальные требования к ОЗУ, но они более, чем скромные.
 Есть [[https://archive.codeplex.com/?p=sqlmem|мнения]], что для систем с объёмом ОЗУ более 20GB под ОС нужно резервировать 12.5% общего объёма ОЗУ.  Есть [[https://archive.codeplex.com/?p=sqlmem|мнения]], что для систем с объёмом ОЗУ более 20GB под ОС нужно резервировать 12.5% общего объёма ОЗУ. 
-На мой субъективный взгляд это избыточный подход, и исходя из имеющейся практики использования Windows Server 2012 R2, полагаю, что для комфортной работы базовой ОС в нашем случае будет более, чем достаточно 4GB ОЗУ.+На мой субъективный взгляд это избыточный подход, и исходя из имеющейся практики использования **Windows Server 2012 R2**, полагаю, что для комфортной работы базовой ОС в нашем случае будет более, чем достаточно **4GB** ОЗУ. 
 + 
 +=== Рассчитываем ОЗУ под сторонние приложения ===
  
-Рассчитываем ОЗУ под сторонние приложения 
---- 
 Помимо потребностей базовой ОС, на сервере, как правило, имеются приложения инфраструктурной обвязки, такие как всевозможные агенты мониторинга, управления, резервного копирования, антивирусное ПО и т.д. Помимо потребностей базовой ОС, на сервере, как правило, имеются приложения инфраструктурной обвязки, такие как всевозможные агенты мониторинга, управления, резервного копирования, антивирусное ПО и т.д.
-В случае, если сервер 1С:Предприятие планируется установить на одной системе с SQL Server, то нужно учесть величину ОЗУ, необходимую для работы сервера 1С:Предприятия (анализируем суммарное потребление памяти такими процессами, как ragent, rmngr и rphost). +В случае, если сервер **1С:Предприятие** планируется установить на одной системе с SQL Server, то нужно учесть величину ОЗУ, необходимую для работы сервера 1С:Предприятия (анализируем суммарное потребление памяти такими процессами, как **ragent****rmngr** и **rphost**). 
-В нашем примере 1С на сервере SQL Server нет, а есть только инфраструктурные приложения набора System Center (агенты SCOM/SCCM/SCDPM) и антивирусное ПО.  +В нашем примере 1С на сервере SQL Server нет, а есть только инфраструктурные приложения набора [[:microsoft-system-center|System Center]] (агенты SCOM/SCCM/SCDPM) и антивирусное ПО.  
-В общей сложности под эти задачи мы зарезервируем 2GB ОЗУ.+В общей сложности под эти задачи мы зарезервируем **2GB** ОЗУ.
      
-Рассчитываем ОЗУ SQL Server +=== Рассчитываем ОЗУ SQL Server ===
---- +
-Чтобы рассчитать накладные служебные расходы ОЗУ SQL Server, выходящие за рамки параметра "Maximum server memory" воспользуемся формулой из статьи https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016:+
  
-stack size calculated max worker threads + -g startup parameter (or 256MB by default if -g is not set). +Чтобы рассчитать __накладные служебные расходы ОЗУ__ **SQL Server**, выходящие за рамки параметра **Maximum server memory**, воспользуемся формулой из статьи [[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Server Memory Server Configuration Options]]:
  
-где+<blockquote>stack size * calculated max worker threads + -g startup parameter (or 256MB by default if -g is not set).</blockquote> 
  
-Значение "stack size" рассчитывается согласно документа https://docs.microsoft.com/en-us/sql/relational-databases/memory-management-architecture-guide?view=sql-server-2017#stacksizes +где:
-На 64-битной ОС с 64-битной SQL Server stack size равен 2048KB+
  
-Значение "calculated max worker threads" рассчитывается согласно документа https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-worker-threads-server-configuration-option?view=sql-server-2016 В этом документе приводится таблица расчётных значений в зависимости от количества процессоров и битности сервера. +  * Значение **stack size** рассчитывается согласно документа [[https://docs.microsoft.com/en-us/sql/relational-databases/memory-management-architecture-guide?view=sql-server-2017#stacksizes|Memory Management Architecture Guide]]На 64-битной ОС с 64-битной SQL Server stack size равен **2048KB**
-В нашем случае используется 64-битный сервер с 12 ядрами. Таким образом, в этом случае расчёт будет выполняться по формуле 512 + ((logical CPU’s - 4) 16) = 640.+
  
-Итак, в нашем примере накладные расходы SQL Server составят 2MB * 640 256MB 1536MB = 1,5GB+  * Значение **calculated max worker threads** рассчитывается согласно документа [[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-worker-threads-server-configuration-option?view=sql-server-2016|Configure the max worker threads Server Configuration Option]]. В этом документе приводится таблица расчётных значений в зависимости от количества процессоров и битности сервера. \\ В нашем случае используется 64-битный сервер с 12 ядрами, поэтому расчёт будет выполняться по формуле 512 ((logical CPU’s - 4) * 16) 640. 
  
-Обратите внимание на то, что если на сервере SQL Server планируется использовать более одного экземпляра SQL Server, то расчёт накладных расходов нужно выполнять по аналогии отдельно для каждого экземпляра.  +Итак, в нашем примере накладные расходы SQL Server составят 2MB * 640 + 256MB = 1536MB = **1,5GB**. \\ \\ Обратите внимание на то, что если на сервере SQL Server планируется использовать более одного экземпляра SQL Server, то расчёт накладных расходов нужно выполнять по аналогии отдельно для каждого экземпляра. Например, в нашем случае планируется использование двух инстансов SQL Server, поэтому значение, которое нужно зарезервировать на накладные расходы SQL Server будет увеличено до **3GB** (1,5GB * 2)
-Например, в нашем случае планируется использование двух инстансов SQL Server, поэтому значение, которое нужно зарезервировать на накладные расходы SQL Server будет увеличено до 3GB (1,5GB * 2)+
  
  
-Итоговый расчёт max server memory +=== Итоговый расчёт Maximum server memory ===
---- +
-Согласно нашего примера итоговый расчёт памяти, который можно указать в качестве "Maximum server memory" будет выглядеть так:+
  
-Всего ОЗУ на сервере (72GB) - ОЗУ под нужды ОС (4GB) - ОЗУ под сторонние приложения (2GB) - ОЗУ накладные расходы SQL Server (3GB) = 63GB.  +Согласно нашего примера, итоговый расчёт памяти, который можно указать в качестве **Maximum server memory** будет выглядеть так:
-Теперьучитывая то, что у нас на сервере будет 2 экземпляра SQL Server, остаётся только разделить полученную величину между экземплярами в зависимости от их потребностей и задать соответствующие значения в параметре.  +
-Одному из двух экземпляров SLQ Server, который в нашем случае будет использоваться разными мелкими служебными приложениями, мы разрешим использовать лишь малую часть расчётного максимального значения -  3GB, а экземпляру SQL Server, который будет обслуживать базы 1C:Предприятие мы отдадим оставшиеся 60GB в качестве "Maximum server memory".+
  
 +Всего ОЗУ на сервере (72GB) - ОЗУ под нужды ОС (4GB) - ОЗУ под сторонние приложения (2GB) - ОЗУ накладные расходы SQL Server (3GB) = **63GB**.
  
-Параметр "Minimum server memory" определяет нижнюю границу невысвобождаемой экземпляром SQL Server памяти. При запуске экземпляра эта память не занимается сразу, однако добравшись до этой нижней границы, указанный объём памяти закрепляется за работающим экземпляром SQL Server.  +Теперь, учитывая то, что у нас на сервере будет 2 экземпляра SQL Server, остаётся только разделить полученную величину между экземплярами в зависимости от их потребностей и задать соответствующие значения в параметре.
-Найти каких-то чётких рекомендаций относительно этого показателя для 1С не удалось, поэтому воспользуемся простым примером из  документа [[https://its.1c.ru/db/metod8dev/content/5904/hdoc|1С:ИТС - Настройки Microsoft SQL Server для работы с 1С:Предприятием]] и установим значение "Minimum server memory"  в виде половины от рассчитанного выше значения "Maximum server memory"+
    
-{{ :1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:pasted:20190213-105916.png }}+Одному из двух экземпляров SLQ Server, который в нашем случае будет использоваться разными мелкими служебными приложениями, мы разрешим использовать лишь малую часть расчётного максимального значения -  **3GB**, а экземпляру SQL Server, который будет обслуживать базы **1C:Предприятие** мы отдадим оставшиеся **60GB** в качестве **Maximum server memory**.
  
-Дополнительная информация+\\ 
-[[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Server Memory Server Configuration Options]] / [[https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Параметры конфигурации сервера «Server Memory»]]+==== Опция Minimum server memory ====
  
 +Параметр **Minimum server memory** определяет нижнюю границу невысвобождаемой экземпляром SQL Server памяти. При запуске экземпляра эта память не занимается сразу, однако добравшись до этой нижней границы, указанный объём памяти закрепляется за работающим экземпляром SQL Server.
  
 +Найти каких-то чётких рекомендаций относительно этого показателя для 1С не удалось, поэтому воспользуемся простым примером из  документа [[https://its.1c.ru/db/metod8dev/content/5904/hdoc|1С:ИТС - Настройки Microsoft SQL Server для работы с 1С:Предприятием]] и установим значение **Minimum server memory** в виде половины от рассчитанного выше значения **Maximum server memory**.
 + 
 +{{ :1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:pasted:20190213-105916.png }}
 +
 +
 +----
 +Дополнительные источники информации:
 +  * [[https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Server Memory Server Configuration Options]]
 +  * [[https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2016|Параметры конфигурации сервера "Server Memory"]]
  
  
Строка 75: Строка 79:
 {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 13.02.2019 10:57 {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 13.02.2019 10:57
  
-{{tag>"SQL Server" "SQL Server 2016" "1С Предприятие 8.3" Sizing Memory}}+{{tag>"SQL Server" "SQL Server 2016" "1C 8.3" "1C" Sizing "Server Memory" Perfomance}}
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
 ~~NOTOC~~ ~~NOTOC~~
1c/setting-up-microsoft-sql-server-for-1c-enterprise-8-3/maximum-and-minimum-server-memory-sql-server-options.1550045017.txt.gz · Последнее изменение: 13.02.2019 11:03 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki