При развертывании тяжелых корпоративных систем на платформе «1С:Предприятие 8.3», таких как 1С:ERP Управление предприятием 2.4, системные администраторы и руководители проектов часто сталкиваются с жесткими ограничениями бюджета или предложениями ИТ-отдела использовать имеющееся «свободное» оборудование. Типичный сценарий — попытка запустить совмещенный сервер (СУБД, сервер приложений 1С и терминальный сервер RDP на одной физической машине) для обслуживания 20–25 активных пользователей.
В этой статье мы подробно проанализируем реальный кейс выбора оборудования, рассмотрим архитектурные особенности работы платформы 1С и MS SQL Server, рассчитаем реальную потребность в оперативной памяти и выясним, почему традиционные жесткие диски SAS больше не применимы в современных ERP-системах.
ИТ-отдел компании предлагает под проект внедрения 1С:ERP 2.4 физический сервер в следующей комплектации:
Давайте подробно разберем каждый элемент этой конфигурации, выявим узкие места и найдем оптимальное архитектурное решение.
Для правильного выбора процессора под нужды 1С необходимо понимать специфику работы платформы «1С:Предприятие». Большинство критически важных операций в 1С (таких как проведение документов, расчет себестоимости, заполнение сложных аналитических отчетов) выполняются в один поток. Это означает, что производительность системы при обработке одной конкретной транзакции напрямую зависит от тактовой частоты одного ядра процессора и его микроархитектуры (показатель IPC — количество инструкций за такт).
Проанализируем предложенные процессоры с точки зрения 1С:
Выясним причину, почему 4 ядра — это критически мало для совмещенного сервера. Рассмотрим распределение ядер между службами при пиковой нагрузке:
rphost): для обслуживания 25 пользователей ERP и выполнения многочисленных регламентных заданий (расчет партионного учета, отложенное проведение, загрузка данных) требуется еще минимум 2 ядра.Если мы выберем высокочастотный 4-ядерный Xeon Gold 5122 и оставим на нем терминальный сервер, система мгновенно зайдет в тупик (CPU starvation). Как только один пользователь запустит тяжелый отчет, а СУБД начнет выполнять регламентную операцию, процессор будет загружен на 100%, и все остальные 24 пользователя терминала увидят полностью заблокированный («зависший») интерфейс.
Вердикт по процессору: Выбирать необходимо однозначно Intel Xeon Gold 5122 (3.6 GHz), но при этом категорически запрещено запускать терминальный сервер (RDP) на этой же физической машине. Все пользователи должны работать через Тонкий клиент, установленный на их локальных компьютерах.
Рассмотрим, почему совмещение ролей сервера приложений, СУБД и RDP при наличии всего 64 GB оперативной памяти приведет к краху производительности. Проведем детальный расчет потребления ОЗУ для конфигурации 1С:ERP 2.4 на 25 пользователей.
Вариант А: Совмещенный сервер с терминальным доступом (RDP)
25 * 1.2 GB = 30 GB.rphost сервера 1С также потребляют память под кэш метаданных, временные таблицы и сеансы пользователей. В среднем это еще около 500 MB на пользователя. Итого для 25 пользователей: 25 * 0.5 GB = 12.5 GB.Сложим все показатели: 4 GB (ОС) + 30 GB (RDP) + 12.5 GB (1С) + 16 GB (SQL) = 62.5 GB. Это идеализированный расчет впритык. При реальной эксплуатации нагрузка превысит физические 64 GB. Операционная система будет вынуждена непрерывно сбрасывать данные из ОЗУ в файл подкачки (pagefile.sys) на жесткий диск (процесс свопинга). Так как скорость чтения/записи дисков в тысячи раз ниже скорости оперативной памяти, вся система начнет сильно тормозить.
Вариант Б: Отказ от RDP в пользу Тонкого клиента
Если мы убираем терминальный сервер и переводим пользователей на локальный Тонкий клиент, структура потребления памяти кардинально меняется:
Ограничить аппетиты SQL Server по потреблению памяти можно с помощью следующего T-SQL скрипта (выполните его в SQL Server Management Studio):
EXEC sys.sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE;
GO
EXEC sys.sp_configure N'max server memory (MB)', N'32768' RECONFIGURE WITH OVERRIDE;
GO
ИТ-отдел предлагает использовать классический массив из 4-х жестких дисков SAS 15K. Разберем по шагам, почему это критическая ошибка, которая сделает невозможной комфортную работу в 1С:ERP 2.4.
Главным показателем производительности дисковой системы для баз данных является не линейная скорость чтения/записи (МБ/с), а количество операций ввода-вывода в секунду (IOPS) при случайном доступе блоками по 4 КБ и 8 КБ.
При проведении документов ERP активно перезаписывает таблицы регистров накопления и сведений, выполняет запись транзакционных логов (файлы .ldf в MS SQL) и интенсивно использует временную базу данных tempdb. Из-за нехватки IOPS диски SAS уйдут в постоянную 100% загрузку, увеличится время отклика (Disk Latency), СУБД начнет выстраивать запросы в очереди, что мгновенно приведет к появлению ошибок в 1С: «Время ожидания блокировки превышено».
Решение: Полностью откажитесь от магнитных дисков SAS 15K для хранения базы данных, логов транзакций и временных файлов tempdb. Вместо них необходимо установить твердотельные накопители класса Enterprise SSD (например, с интерфейсом NVMe или серверные SATA/SAS SSD с высоким ресурсом перезаписи — показатель DWPD не менее 3). Даже один бюджетный серверный SSD выдает от 50 000 до 80 000 IOPS на запись, что полностью решает проблему дисковых задержек.
Поскольку сервер приложений 1С и СУБД MS SQL Server будут функционировать на одной физической машине (без RDP), мы можем использовать механизм оптимизации межпроцессного взаимодействия — протокол Shared Memory (Общая память).
По умолчанию сервер 1С общается с SQL Server через сетевой протокол TCP/IP, даже если они установлены локально на одном компьютере. Это создает лишнюю нагрузку на сетевой стек операционной системы. Протокол Shared Memory позволяет процессу rphost общаться с процессом СУБД sqlservr.exe напрямую через оперативную память сервера, минуя сетевую карту и стек протоколов TCP/IP. Это дает прирост производительности при передаче больших объемов данных между СУБД и сервером приложений до 10–15%.
Выясним, как проверить, используется ли протокол Shared Memory. Для этого выполним в SQL Server Management Studio следующий запрос:
SELECT session_id, net_transport, client_net_address
FROM sys.dm_exec_connections;
В результатах запроса в колонке net_transport для подключений от сервера 1С должно быть указано значение Shared memory. Если там указано TCP, необходимо открыть SQL Server Configuration Manager, перейти в раздел SQL Server Network Configuration -> Protocols for MSSQLSERVER и убедиться, что протокол Shared Memory включен (Enabled).
Проанализировав все особенности работы 1С:ERP 2.4 на 20–25 пользователей, мы можем сформировать четкий план действий по доработке предложенной ИТ-отделом конфигурации сервера:
tempdb приобретаем массив из серверных Enterprise SSD (рекомендуется настроить RAID-1 или RAID-10 для отказоустойчивости).rphost, и включаем протокол Shared Memory для ускорения обмена данными.