При переходе на крупные конфигурации, такие как 1С:ERP Управление предприятием, многие компании сталкиваются с резким падением производительности, даже если оборудование кажется достаточно мощным. В этой статье мы подробно разберем реальный кейс: сервер на 70-100 пользователей, база PostgreSQL и критическая проблема — открытие формы ресурсной спецификации занимает 30 минут. Проанализируем как аппаратную часть (выбор процессора, дисков, памяти), так и программные ошибки, приводящие к таким задержкам.
Рассмотрим ситуацию, описанную в исходной задаче. Пользователи жалуются, что при открытии "Дерева" в конструкторе ресурсных спецификаций система зависает на полчаса. Замер производительности в конфигураторе показал, что эта операция генерирует 1 300 000 запросов к базе данных.
Давайте проанализируем, почему это происходит и почему замена сервера на самый мощный в мире не решит эту проблему полностью.
Это классическая архитектурная ошибка, известная как проблема N+1 или «чрезмерная болтливость» (Chatty Interface). В данном случае, вероятно, происходит следующее:
Почему железо бессильно?
Предположим, у нас есть задержка (latency) при обращении к серверу всего 0.1 миллисекунды (это очень быстро).
1 300 000 запросов * 0.0001 сек = 130 секунд
Это 2 с лишним минуты чистого сетевого времени, не считая времени на выполнение кода. В реальности накладные расходы выше. Даже если мы поставим процессор, который работает в 2 раза быстрее, мы сократим время выполнения кода, но не избавимся от задержек на передачу данных между клиентом и сервером СУБД.
Решение:
Необходимо переписать алгоритм формирования дерева. Данные должны получаться одним (или несколькими крупными) запросами на сервере, дерево должно строиться в памяти сервера и передаваться на клиент уже в виде готовой структуры данных, например, через ДеревоЗначений или структуру, адаптированную для формы. Утверждения программистов о том, что "код максимально оптимизирован", в данном случае требуют независимой проверки.
Перейдем к выбору железа. Для сервера 1С и PostgreSQL критически важна однопоточная производительность. Чем выше частота ядра и чем больше инструкций за такт (IPC) оно выполняет, тем быстрее проводятся документы и выполняются транзакции.
Рассмотрим выбор между современными платформами:
Здесь мы сталкиваемся с архитектурой гибридных ядер (P-cores и E-cores). Для сервера 1С это может быть проблемой. Планировщик задач ОС не всегда корректно распределяет процессы rphost или postgres, иногда отправляя их на медленные энергоэффективные ядра (E-cores), что вызывает "фризы". Кроме того, существуют известные проблемы со стабильностью кристаллов в топовых моделях этих поколений.
Это отличный выбор для "десктопного" сервера 1С. Все ядра (в рамках одного CCD) равнозначны и обладают высочайшей производительностью на ядро.
Проблема перегрева:
Поскольку серверная комната отсутствует, важно, чтобы сервер не перегревался. Современные процессоры Ryzen имеют настраиваемый TDP (Eco Mode). Ограничив потребление (например, до 105 Вт), мы потеряем 5-10% производительности в полной нагрузке, но получим холодный и тихий камень, что критично для офисного размещения.
При планируемом объеме памяти в 192 Гб использование обычной (Non-ECC) памяти несет серьезные риски.
Вероятность возникновения случайной ошибки бита (bit flip) возрастает с увеличением объема памяти. Для игрового ПК это может привести к вылету текстуры, но для сервера базы данных (PostgreSQL) ошибка в памяти может привести к скрытому повреждению данных в таблицах БД. Вы можете узнать об этом только через месяц, когда база перестанет проходить тестирование или не сделается бэкап.
Рекомендация:
Платформа AM5 поддерживает ECC UDIMM (небуферизированную ECC память). Настоятельно рекомендуем найти и использовать именно её. Материнские платы уровня ASUS ProArt или серверные платы на чипсетах AMD обычно поддерживают этот тип памяти.
Использование потребительских SSD (Samsung 970 EVO Plus, 980/990 Pro) для сервера баз данных ERP — это риск потери данных. Основные отличия серверных (Enterprise) SSD:
Рассмотрим варианты подключения: лучше использовать M.2 Enterprise SSD (22110) или U.2 диски через переходники, если корпус позволяет обеспечить им обдув. Samsung PM1735 — отличный вариант, но требует слота PCIe или кабелей U.2.
Одной из причин быстрого роста размера базы (100-150 Гб) является хранение присоединенных файлов (сканы договоров, картинки номенклатуры) непосредственно в таблицах базы данных.
Как проверить и исправить:
.dt и файлов БД PostgreSQL), ускорит бэкапы и облегчит работу СУБД.Даже самое мощное железо нужно правильно настроить. Для связки Ubuntu 22.04 + PostgreSQL 14 + 1С обратите внимание на следующие параметры:
performance. В Linux по умолчанию может стоять режим энергосбережения, который снижает частоту ядер при "рваной" нагрузке 1С, вызывая микрофризы.random_page_cost равным 1.1 (для NVMe SSD), чтобы планировщик запросов чаще использовал индексы, понимая, что случайное чтение "стоит" дешево.Для стабильной работы 1С:ERP на 100 пользователей в описанных условиях: