Ситуация, когда на одном сервере сосуществуют 120 информационных баз и более сотни активных пользователей, является экстремальной для типовых конфигураций оборудования. Если при этом работа в базах становится практически невозможной, необходимо провести комплексный аудит системы: от аппаратной части до тонких настроек СУБД и кластера 1С. Проанализируем основные причины низкой производительности и разберем пошагово, как оптимизировать такую архитектуру.
В первую очередь обратим внимание на сердце сервера. Процессор Intel Xeon E5-2660 имеет базовую частоту всего 2.20GHz. Для систем на базе 1С это является критическим «бутылочным горлышком». Рассмотрим, почему это так. Архитектура 1С во многом полагается на производительность одного ядра при выполнении бизнес-логики и запросов к базе данных. Низкая частота приводит к тому, что даже при наличии свободных ядер общая скорость отклика системы будет крайне низкой.
Для исправления ситуации выполним следующие действия:
ESXi также выставим схему управления питанием «High Performance».Совмещение сервера приложений 1С и MS SQL Server на одной виртуальной машине при нагрузке в 120 баз — это архитектурная ошибка. Эти два компонента являются «антагонистами» в борьбе за ресурсы (процессорное время и оперативную память). Выясним, как правильно распределить нагрузку:
Проанализируем ситуацию: SQL Server стремится занять всю доступную память для кэширования данных, в то время как процессы rphost сервера 1С также требуют значительных объемов RAM для работы сеансов пользователей и кэша метаданных. В результате система начинает использовать файл подкачки (swap), что фатально снижает скорость работы.
Решение: Разнесем компоненты на разные виртуальные машины.
Если ресурсов на физическом сервере недостаточно, попробуем разделить базы на группы (например, по 40 баз) и создать несколько виртуальных серверов 1С, каждый из которых будет обслуживать свою группу.
При работе с 120 базами данных стандартных настроек SQL Server недостаточно. Разберем ключевые параметры:
1. Ограничение памяти (Max Server Memory). Если вы все же вынуждены использовать один сервер для всего, жестко ограничьте аппетиты SQL. Например, при общем объеме 128 GB, выделим SQL Server не более 60-70 GB. Это можно сделать через SQL Server Management Studio (SSMS):
EXEC sys.sp_configure N'show advanced options', N'1';
RECONFIGURE;
EXEC sys.sp_configure N'max server memory (MB)', N'71680'; -- 70 GB
RECONFIGURE;
2. Параллелизм (MAXDOP). Для баз 1С крайне рекомендуется ограничивать степень параллелизма. Значение Max Degree of Parallelism следует установить в 1 для исключения взаимных блокировок при тяжелых запросах, либо в значение, не превышающее количество ядер в одном NUMA-узле (обычно 4 или 8). Посмотрим, как это настроить:
EXEC sys.sp_configure N'max degree of parallelism', N'1';
RECONFIGURE;
3. Настройка TempDB. При 120 базах нагрузка на временную базу TempDB будет колоссальной. Необходимо создать количество файлов данных TempDB, равное числу логических ядер (но не более 8), и разместить их на самом быстром диске (SSD/NVMe).
Использование обычных SAS-дисков для такой нагрузки недопустимо. 120 баз генерируют огромное количество операций случайного чтения и записи (IOPS). Проанализируем состояние очередей диска: если показатель Avg. Disk Queue Length постоянно выше 2, пользователи будут ощущать «замирания» интерфейса.
Рассмотрим рекомендации по модернизации:
.mdf) и логов транзакций (.ldf) на разные физические массивы. Логи требуют последовательной записи, данные — случайного доступа.TempDB.На стороне сервера 1С (платформа 8.3.13) необходимо оптимизировать работу рабочих процессов rphost. По умолчанию кластер может создавать слишком мало процессов для такого количества баз. Разберем шаги настройки:
rphost приходилось не более 10-15 активных баз.Работа через веб-сервер IIS добавляет еще один уровень абстракции. При 120 базах в IIS создается множество виртуальных каталогов. Проанализируем настройки пулов приложений:
Важно убедиться, что пулы приложений не «засыпают» при бездействии, иначе первый пользователь, заходящий в базу после перерыва, будет ждать несколько минут, пока запустится рабочий процесс. В настройках пула IIS установим Idle Time-out (minutes) в значение 0.
Конфигурация «Управление нашей фирмой» (УНФ) активно использует фоновые и регламентные задания. Если в 120 базах одновременно запустятся задания по извлечению текста для поиска или обновлению индексов, сервер мгновенно «ляжет». Проанализируем список активных заданий и отключим неиспользуемые (например, полнотекстовый поиск в архивных базах или рассылки отчетов, которые никому не нужны). Распределим время запуска тяжелых заданий так, чтобы они не пересекались.
Резюме: Для стабильной работы 120 баз на текущем оборудовании необходимо в первую очередь разнести SQL и 1С на разные виртуальные машины, ограничить потребление памяти SQL-сервером, перевести дисковую подсистему на SSD и настроить кластер 1С на работу с несколькими процессами rphost. Однако долгосрочным решением станет только переход на процессоры с высокой тактовой частотой (3.5 GHz+).