Стоит ли объединять сервер 1С и сервер СУБД (SQL) на одной машине?

Системный администратор IT и автоматизация бизнеса
← На главную

При проектировании архитектуры для работы с платформой 1С:Предприятие часто возникает вопрос: целесообразно ли размещать сервер 1С и сервер базы данных (СУБД) на одной физической машине? Разберем этот вопрос подробно, проанализируем плюсы и минусы такого подхода, а также рассмотрим лучшие практики настройки.

Основные преимущества совмещения серверов

Рассмотрим подробнее, какие выгоды мы получаем, оставляя службы 1С и SQL на одном сервере.

  1. Использование разделяемой памяти. При работе MS SQL Server на одной машине с сервером 1С взаимодействие может идти через протокол Shared Memory. Для PostgreSQL на операционных системах Linux используется аналогичный механизм — Unix domain sockets. Это позволяет обмениваться данными напрямую через оперативную память, минуя сетевой стек, что дает прирост производительности примерно на 10-15%.
  2. Отсутствие сетевых задержек (Ping). В любой, даже самой быстрой локальной сети, существуют микрозадержки при маршрутизации и передаче пакетов. Когда сервисы живут на одной машине, ответ от СУБД к рабочим процессам 1С поступает практически мгновенно.
  3. Экономия ИТ-бюджета. Вы существенно снижаете затраты на инфраструктуру. Нет необходимости закупать второе мощное «железо», а в случае использования Windows Server — вы экономите на дорогих лицензиях операционной системы.

Минусы и возможные скрытые проблемы

Посмотрим на оборотную сторону медали. Совмещение ролей требует более вдумчивого администрирования. Выясним причину возможных "тормозов".

  1. Жесткая конкуренция за оперативную память. Это главный враг рассматриваемой архитектуры. СУБД (будь то MS SQL или PostgreSQL) стремится закэшировать в ОЗУ максимальный объем данных. Рабочие процессы сервера 1С (rphost) также потребляют память, причем часто непредсказуемо (особенно при формировании тяжелых отчетов или закрытии месяца). Если память закончится, сервер начнет использовать файл подкачки, что приведет к катастрофическому падению производительности.
  2. Борьба за ресурсы процессора. Сервер приложений 1С активно нагружает процессор вычислениями и выполнением программного кода, в то время как СУБД тратит такты CPU на построение планов запросов, агрегации и поиск. При тяжелых операциях они начинают мешать друг другу. Если мониторинг показывает, что средняя загрузка процессора стабильно держится выше 50%, это явный сигнал к разделению ролей на разные физические серверы.
  3. Перегрузка дисковой подсистемы (IOPS). Обе службы генерируют колоссальный поток операций ввода-вывода. СУБД постоянно пишет транзакционные логи и работает с временной базой (например, TempDB в MS SQL). Сервер 1С активно эксплуатирует папку временных файлов при компоновке данных и сортировках. Если все это находится на одном физическом массиве дисков, образуется "бутылочное горлышко".

Виртуализация: частая ошибка системных администраторов

Проанализируем ситуацию, когда системные администраторы решают разместить 1С и SQL на одном физическом хосте, но в разных виртуальных машинах (VM) "для надежности". Делать так категорически не рекомендуется. В таком сценарии вы теряете главное преимущество — протокол Shared Memory. Весь трафик начинает ходить через виртуальный сетевой адаптер гипервизора. Хотя это и быстрее физической сети, это накладывает дополнительные расходы на процессор для обработки сетевых пакетов.

Кроме того, никогда не совмещайте на этом же сервере терминальный сервер (RDP). Сессии пользователей и отрисовка графики будут отнимать драгоценные ресурсы у СУБД и 1С.

Практические советы и рекомендации по настройке совмещенного сервера

Если вы приняли решение совмещать роли, разберем по шагам, как правильно настроить сервер, чтобы избежать проблем с производительностью:

  1. Ограничьте аппетиты СУБД к памяти. Обязательно установите жесткий лимит на использование оперативной памяти для сервера баз данных. Например, в настройках MS SQL скорректируйте параметр Max Server Memory. Оставьте достаточный резерв для операционной системы и процессов кластера 1С.
  2. Разнесите дисковую нагрузку. Используйте разные физические накопители, желательно быстрые SSD или NVMe. Рекомендуемая схема: первый массив — под операционную систему и временные файлы 1С; второй массив — под сами файлы баз данных; третий массив — под логи транзакций и TempDB.
  3. Отключите IPv6. Специалисты рекомендуют полностью отключать протокол IPv6 на совмещенном сервере. Это исключит попытки платформы использовать неактивный сетевой стек, что иногда вызывает нежелательные микрозадержки при установке соединений между процессами.

Резюме: когда совмещать, а когда разделять?

Подводя итог, проанализируем статистику и практический опыт интеграторов. Совмещение 1С и SQL на одном сервере является оптимальным решением (Best Practice) для небольших и средних баз. Практика показывает, что такая схема отлично держит нагрузку до 100-300 активных пользователей.

Однако, если у вас крупная база с 500-1500 пользователями, или вы используете тяжелые конфигурации вроде 1С:ERP с огромным количеством фоновых заданий (особенно в период закрытия месяца), архитектуру необходимо разделять. Разделение позволит вам независимо масштабировать вычислительные мощности сервера приложений и сервера баз данных, а также повысит отказоустойчивость системы в целом.

← На главную