При проектировании аппаратной платформы под задачи «1С:Предприятие 8.3» системные администраторы и руководители IT-отделов часто сталкиваются с дилеммой: приобрести классический двухпроцессорный сервер или ограничиться однопроцессорной конфигурацией. На первый взгляд, двухпроцессорная материнская плата кажется надежным заделом на будущее, особенно когда планируется работа 50 активных пользователей, база содержит более 100 тысяч позиций номенклатуры и настроен интенсивный обмен данными с сайтом.
Однако архитектурные особенности платформы «1С», СУБД (например, PostgreSQL или MS SQL Server) и специфика лицензирования накладывают жесткие ограничения. В рамках этой статьи мы подробно разберем, почему в большинстве случаев двухпроцессорные конфигурации не только не приносят ожидаемого прироста производительности, но и могут существенно замедлить работу системы. Мы проанализируем влияние архитектуры NUMA, особенности лицензирования «1С:ПРОФ», требования к дисковой подсистеме и предложим оптимальные аппаратные конфигурации.
Главная техническая проблема двухпроцессорных систем заключается в архитектуре NUMA (Non-Uniform Memory Access) — неравномерном доступе к памяти. Разберем этот механизм подробнее.
В двухпроцессорном сервере каждый физический процессор (сокет) имеет собственный интегрированный контроллер памяти и напрямую работает со своими модулями оперативной памяти (RAM). Эта связка образует так называемый NUMA-узел (NUMA node). Когда процессору №1 требуются данные, находящиеся в локальных модулях памяти процессора №2, он не может получить их напрямую. Запрос отправляется через системную шину межпроцессорного соединения (Intel UPI/QPI или AMD Infinity Fabric).
Обращение к «чужому» NUMA-узлу через межпроцессорную шину происходит значительно медленнее, чем к локальной памяти. Задержки (latency) могут возрастать в несколько раз. Для транзакционных систем, к которым относится «1С:Предприятие», скорость доступа к памяти является критически важным фактором.
Проанализируем поведение рабочих процессов 1С и СУБД на двухпроцессорном сервере:
rphost) крайне чувствителен к задержкам памяти. Если операционная система начинает распределять потоки одного процесса rphost по разным физическим процессорам, производительность резко падает из-за постоянных задержек при обращении к нелокальной памяти.Shared Memory (общая память), минуя сетевой стек. На двухпроцессорном сервере, если СУБД работает на одном процессоре, а рабочий процесс 1С — на другом, использование Shared Memory становится неэффективным и сопровождается колоссальными накладными расходами на копирование данных между NUMA-нодами.Таким образом, с точки зрения архитектуры памяти, однопроцессорная система всегда работает стабильнее и быстрее, так как в ней полностью отсутствует межпроцессорная задержка доступа к ОЗУ.
Выбор серверного железа напрямую связан с бюджетом на лицензии. Начиная с версии платформы 8.3.12, компания «1С» ввела строгое техническое ограничение для лицензий уровня ПРОФ:
Серверная лицензия «1С:ПРОФ» может использовать не более 12 ядер процессора.
Если вы установите серверную лицензию ПРОФ на двухпроцессорный сервер, где каждый процессор имеет, например, по 8 или 12 ядер (в сумме 16 или 24 ядра), платформа «1С» физически задействует только первые 12 доступных ядер. Остальные вычислительные ресурсы будут простаивать или использоваться исключительно операционной системой и СУБД.
Чтобы задействовать более 12 ядер непосредственно под процессы «1С», вам придется приобрести лицензию уровня КОРП. Стоимость лицензий КОРП в несколько раз выше, кроме того, они требуют обязательной ежегодной оплаты технической поддержки (обновлений) в размере около 15% от стоимости лицензий. Для небольшой торговой компании на 50 пользователей такие затраты экономически нецелесообразны.
Для 50 пользователей 12 ядер высокочастотного процессора — это огромный запас вычислительной мощности, которого более чем достаточно при правильной настройке сервера приложений и СУБД. Следовательно, покупать второй процессор, ядра которого 1С даже не сможет использовать по условиям лицензии ПРОФ, бессмысленно.
В среде разработчиков и администраторов «1С» давно известно золотое правило: для 1С критически важна высокая производительность на одно ядро (Single-Thread Performance).
Большинство бизнес-вычислений в 1С (проведение документов, расчет себестоимости, заполнение тяжелых отчетов, закрытие месяца) выполняются строго последовательно в один поток. Если ядро процессора имеет низкую тактовую частоту, то даже при наличии 64 свободных ядер проведение сложного документа будет выполняться медленно. Второй процессор не способен ускорить однопоточную операцию.
Сравним два подхода к выбору процессора:
Рассмотрим популярную ошибку — сборку сервера на дешевых поддержанных процессорах со вторичного рынка (например, комплекты из Китая на базе старых Xeon E5). Такие процессоры имеют низкую удельную производительность на ядро по современным меркам и низкую частоту шины памяти. Для продакшн-сервера компании с 50 пользователями такое решение неприемлемо из-за высоких рисков отказа оборудования и низкой скорости работы.
В процессе обсуждения конфигураций часто возникает соблазн сэкономить на дисках и установить потребительские (игровые) накопители PCIe 4.0 (например, Patriot, Samsung EVO) вместо специализированных серверных решений. Это критическая ошибка, которая может привести к полной потере базы данных.
Выясним основные причины, почему десктопные SSD не подходят для сервера 1С + СУБД:
tempdb, запись журнала транзакций). Потребительский накопитель под такой нагрузкой исчерпает свой ресурс и выйдет из строя за несколько месяцев. Серверные SSD (класса Mixed Use или Write Intensive) спроектированы под непрерывную работу в режиме 24/7 и имеют ресурс, в десятки раз превышающий показатели домашних дисков.Проанализируем две проверенные и надежные конфигурации для работы 50 пользователей в базе с объемом номенклатуры 100 тыс. позиций и активным обменом.
Этот вариант собирается в специализированном серверном шасси (например, 1U/2U для установки в стойку) с использованием серверной материнской платы и процессора с поддержкой ECC-памяти.
tempdb.Если бюджет ограничен, но требуется максимальное быстродействие в однопоточных задачах, можно рассмотреть сборку на базе платформы для рабочих станций. Этот вариант обеспечивает высочайшую скорость работы, но требует качественного охлаждения и бесперебойного питания.
Посмотрим на программную часть сервера. В первом сообщении автор планирует использовать связку Windows 10 + PostgreSQL + IIS. Разберем слабые места этого выбора:
Резюмируя проведенный анализ, сформулируем ключевые правила для сборки производительного сервера 1С на 50 пользователей: