Перейти к основному содержанию

Сервер с Windows 10 оптимизируем для 1С

Windows

Сегодня новая задачка. Имеем сервер, почти ничего о нём не знаем, кроме кредов доступа. Знаем, что там работает 1С и крутится база MSSQL. Наша задача состоит в том, чтобы сервер стал работать лучше. Погнали.

Сбор сведений

Мы ничего не знаем о сервере, поэтому начнём сбор сведений. Узнаем ОС:

winver
win

Характеристики:

  • ОС: Windows 10
  • Процессор: 13th Gen Intel(R) Core(TM) i7-13700KF 3.4 GHz (16 ядер, 24 логических процессора)
  • Оперативная память 128 ГБ
  • Диск под систему: Samsung SSD 980 Pro 2 ТБ
  • Диск под БД: Samsung SSD 980 Pro 2 ТБ
  • Два диска под бэкапы, собраны в динамический RAID1 массив: Seagate IronWolf ST400VN0006-3CW104 4 ТБ, скорость 5400 RPM

Процессор нормальный, диски под систему и MSSQL нормальные. А вот для бэкапов скорость низковата, ну да ладно.

win

Процессор разогнан под 5.11 ГГц.

win

Установлен MSSQL 2019, 1С. Дополнительно создан RAM диск на 30 ГБ для tempdb.

Видно, что кто-то уже постарался и произвёл оптимизацию. Постараемся сделать ещё лучше.

Настройка MSSQL для работы с 1С — мифы и реальность

Программная оптимизация ОС под 1С

Установка последнего Service Pack и Cumulative Update на MSSQL

Дело хорошее, но пока этим заниматься не буду. При попытке установить обновления получаю ошибку:

С установкой обновлений возникли некоторые проблемы, но попытка будет повторена позже. Если вы продолжаете видеть это сообщение и хотите получить сведения, выполнив поиск в Интернете или обратившись в службу поддержки, вам может помочь это: (0x80070005)

Проблема в том, что служба "Центр обновления Windows" отключена вручную. Пока не будет настроено зеркало и не проверена работа резервного копирования, критичных операций производить не буду.

Форматирование с размером блока 64 КБ

Рекомендуют форматировать файловую систему для БД с размером блока 64 Кб.

Стандартный размер кластера (лучше использовать это название) в файловой системе NTFS:

  • ёмкость до 16 Тб — 4 килобайта
  • ёмкость от 16 до 32 Тб — 8 килобайт
  • ёмкость от 32 до 64 Тб — 16 килобайт
  • ёмкость от 64 до 128 Тб — 32 килобайта
  • ёмкость от 128 до 256 Тб — 64 килобайта

Тоже этим заниматься сейчас не буду. База уже в работе, отформатировать диск не получится. Вернусь к этому позже, когда появится удобный момент.

Database instant file initialization

Рекомендуют включить возможность Database instant file initialization для пользователя, от которого запущена служба Microsoft SQL Server. Служба сейчас работает от имени NT Service\MSSQLSERVER.

  1. Запускаем Local Group Policy Editor:

    gpedit.msc
  2. Слева выбираем Local Computer Policy, Computer Configuration, Windows Settings, Security Settings, Local Policies, User Rights Assigment.
  3. Тыкаем в Perform volume maintenance tasks.
  4. Сюда добавляем юзера, от имени которого запускается SQL Server.

Мне добавлять не пришлось, кто-то уже раньше добавил пользователя.

win

Lock pages in memory

Рекомендуют установить разрешение на Lock pages in memory (блокировку страниц в памяти) для пользователя, от которого запущена служба Microsoft SQL Server. Эта политика Windows определяет, какие учетные записи могут сохранять данные в физической памяти, чтобы система не отправляла страницы данных в виртуальную память на диске.

  1. Запускаем Local Group Policy Editor:

    gpedit.msc
  2. Слева выбираем Local Computer Policy, Computer Configuration, Windows Settings, Security Settings, Local Policies, User Rights Assignment.
  3. Тыкаем в Lock pages in memory.  

    win
  4. Видим, что политика уже настроена.

Power Option: High performance

Проверим план электропитания (хотя частота процессора уже говорит о том, что план верно настроен).

win

Максимальная производительность, всё в порядке.

Индексация файлов

Отключаем индексацию файлов на диске с БД.

win

И снова уже кто-то настроил раньше.

Антивирус

Нам нужно исключить диски из проверки антивирусом и внести его в исключения. 

win

Диск с БД и RAM внесены в исключения. Но можно подтюнить. Добавим в исключения процесс sqlservr.exe.

win

Сжатие содержимого

Проверяю директорию для БД: D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA. Проверяю, что сняты галки шифрования для компрессии.

win

Программная оптимизация MSSQL под 1С

Настройка памяти

MSSQL - настройка памяти

win

На сервере живёт 1С, поэтому максимальному размеру памяти даём половину памяти сервера. Минимальному размеру памяти — четверть памяти сервера, чтобы не отдать случайно всё под процессы 1С.

Настройка процессора

MSSQL - настройка процессора

win

Расположение файлов данных

Проверяю. Всё настроено на нужные диски.

win

Разбить tempdb на несколько файлов по количеству процессоров

Уже кто-то разбил.

win

Перенести tempdb в RAM

Тоже сделано.

MSSQL - переносим tempdb на RAM диск

Max degree of parallelism

Кто-то 5 поставил, меняю на 8.

win

Прирост файлов БД

Снимаю ограничение на размер лога.

win

Немного поясню, на Simple баз этого можно не делать. Если настраиваете зеркалирование, базы в режиме FULL, и второй сервер у вас периодически не работает, то максимальный размер лога нужно увеличить, чтобы БД на встала. Естественно, нужно предусмотреть куда вы будете перетаскивать файлы, если диск полностью забьётся.

Флаги трассировки

  • 4199 — включает исправления оптимизатора из фиксов.
  • 1118 — использовать разные страницы памяти.

Проверка статусов флагов трассировки:

DBCC TRACESTATUS (1118, 4199);
GO

Запускаем SQL Server Configuration Manager. SQL Server Services. SQL Server — правой кнопкой свойства. Вкладка Startup Parameters. Добавляем -T1118 и -T4199.

sql

Для применения потребуется перезапустить SQL сервер.

Сетевые протоколы

Протокол "Named pipes" необходимо отключить.

Запускаем SQL Server Configuration Manager. SQL Server Network Connfiguration. Protocols for MSSQLSERVER (наш инстанс). Делаем Named Pipes - Disabled.

"TCP/IP" тоже включаю, потому как позже буду настраивать зеркалирование.

Резервирование и обслуживание

Настрою позже, когда буду делать зеркалирование.

Бонусная оптимизация

Мало что пришлось подкручивать, поэтому немного добавлю от себя. Будем чистить память по расписанию.

1C — очищаем оперативную память по расписанию

win

Запускаю, память чистится.

win

Теги

 

Похожие материалы

Maintenance Plans — резервное копирование и обслуживание баз данных 1С в Microsoft SQL Server 2019

Microsoft SQL Server 2019 позволяет использовать встроенные средства резервного копирования и обслуживания баз данных — Maintenance Plans. Описываемый план обслуживания успешно используется для баз данных 1С, но не ограничивается ими.

Теги

MSSQL — уменьшаем Initial Size в tempdb

Срочно понадобилось уменьшить размер tempdb. Можно выполнить сжатие, перезапуск сервера, танцы с бубнами. Всё это уменьшит размер tempdb, но не сделает его меньше Initial Size. И это большая проблема, особенно для тех экземпляров, где база tempdb вынесена в оперативную память.

Теги