Разберем типичную дилемму системного администратора: в распоряжении имеется мощный двухпроцессорный сервер (например, 2x Intel Xeon E5-2683 v3, 128 Гб RAM, контроллер Smart Array P440 с кэшем FBWC), лицензия Windows Server Datacenter, а парк пользовательских станций сильно устарел. Встает вопрос: стоит ли строить ферму виртуализации с доставкой приложений (RemoteApp, Citrix XenApp) или эффективнее использовать классическую клиент-серверную архитектуру 1С?
Проанализируем технические нюансы такой инфраструктуры, сопоставим варианты организации рабочих мест и рассмотрим правила оптимизации оборудования.
Первое побуждение при наличии слабых рабочих станций — развернуть виртуальные машины и организовать доставку приложений через Citrix XenApp или ферму Microsoft RDS (RemoteApp). Однако в среде 1С:Предприятие 8.3 это далеко не всегда оправдано.
Сервер 1С и СУБД (в частности, PostgreSQL) крайне чувствительны к задержкам (latency) процессора и дисковой подсистемы. Слой гипервизора неизбежно создает накладные расходы.
Если принято решение разворачивать виртуальные машины, обязательно выполним следующие требования:
Для конфигурации с PostgreSQL на Linux оптимальным решением часто является установка системы непосредственно на «железо» (Bare Metal) без гипервизора, что исключает просадку скорости вычислений.
Используемые процессоры Intel Xeon E5-2683 v3 имеют 14 ядер на сокет, но низкую базовую тактовую частоту — 2.00 ГГц. В 1С подавляющее большинство критичных блокирующих операций (проведение документов, закрытие месяца, расчет себестоимости) выполняется в один поток. Следовательно, производительность каждого отдельного ядра имеет первостепенное значение.
Разберем по шагам оптимизацию хоста:
По умолчанию серверные платформы HPE настроены на экономию электроэнергии, что приводит к переходу ядер в энергосберегающие состояния (C-States) и резкому росту задержек при смене нагрузки. В BIOS необходимо включить профиль электропитания High Performance / Maximum Performance, отключить режимы C-States и C1E, а также активировать режим Turbo Boost на максимальной планке частоты.
В двухпроцессорной системе оперативная память разделена между сокетами. Обращение одного процессора к памяти, подключенной к соседнему сокету, увеличивает время ожидания. Для оптимизации связки 1С и СУБД под Linux рекомендуется привязывать процессы к конкретным узлам NUMA с помощью утилиты numactl, либо разносить процессы ragent/rphost и демон postgres по разным сокетам.
Хранить рабочие базы данных на одиночных SSD без объединения в RAID-массив недопустимо, так как внезапный отказ диска приведет к остановке предприятия и потере данных. Имеющийся контроллер HPE Smart Array P440 с энергонезависимой памятью FBWC (2 Гб) позволяет собрать надежный массив RAID 10. При этом необходимо убедиться, что на контроллере активирован режим кэширования записи (Write-Back / Accelerator). В случае использования SSD потребительского класса контроллер может отключать внутренний кэш, поэтому для баз данных 1С следует применять серверные накопители (Enterprise SSD).
Так как суммарно сервер имеет 28 физических ядер (56 потоков Hyper-Threading), стандартная конфигурация 1С с одним рабочим процессором не сможет эффективно утилизировать ресурсы.
rphost). Рекомендуется настроить распределение соединений так, чтобы на один процесс rphost приходилось от 20 до 30 сеансов пользователей. Это защитит систему от утечек памяти в рамках одного процесса и позволит полноценно нагрузить многоядерный процессор.postgresql.conf:
Параметр random_page_cost уменьшим до значений 1.1–1.5 (дефолтное значение 4.0 ориентировано на медленные шпиндельные HDD). Это позволит планировщику запросов эффективнее использовать индексы.
Параметр effective_io_concurrency для SSD поднимем до 100–200. На уровне ядра Linux настроим выделение больших страниц памяти (HugePages) для ускорения обращений СУБД к кэшу shared_buffers.
Итоговая рекомендация: Не усложняйте инфраструктуру терминальными службами и доставкой приложений, требующими покупки дорогих лицензий RDS CAL. Разверните связку Linux + PostgreSQL + Сервер 1С на физическом сервере без гипервизора, переведите дисковую подсистему в отказоустойчивый RAID-массив, а пользователей подключите через тонкий клиент или веб-публикацию. Это обеспечит максимальную производительность базы данных и комфортную работу даже на старых рабочих станциях.