При переходе на свободное программное обеспечение перед многими администраторами встает вопрос выбора операционной системы для СУБД PostgreSQL, обслуживающей базы данных 1С:Предприятие. Часто в официальных списках совместимости платформы 1С фигурируют лишь определенные коммерческие или наиболее популярные дистрибутивы, такие как Red Hat Enterprise Linux, CentOS или Ubuntu. В связи с этим возникает сомнение: можно ли использовать стабильный и надежный Debian в качестве платформы под PostgreSQL для 1С? Не возникнет ли критических проблем совместимости?
В этой статье мы подробно проанализируем ситуацию, разберем популярные заблуждения системных администраторов касательно дистрибутивов и архитектур процессоров, а также рассмотрим пошаговый процесс развертывания и оптимизации PostgreSQL на базе Debian для обеспечения максимальной производительности 1С.
В процессе обсуждений на форумах нередко можно встретить утверждение, что «Debian — это надстройка над Ubuntu». Это в корне неверное представление, которое полностью переворачивает реальное положение дел. Рассмотрим факты:
apt и формат пакетов .deb. Опыт администрирования, скрипты автоматизации и подходы к настройке системы практически полностью идентичны для обеих ОС.Еще одно техническое заблуждение, с которым сталкиваются специалисты при поиске дистрибутивов PostgreSQL для Debian — это путаница в обозначениях архитектур процессоров. Некоторые ошибочно предполагают, что amd64 и x86_64 — это разные архитектуры, или что одна из них является ограниченной (32-битной с расширением памяти PAE). Выясним истину:
amd64 и x86_64 — это синонимы, обозначающие одну и ту же 64-разрядную архитектуру микропроцессоров. Первой ее разработала компания AMD (как расширение классической 32-битной архитектуры x86), назвав AMD64. Позже Intel лицензировала эту технологию под названиями Intel 64 и EM64T.amd64. В дистрибутивах семейства Red Hat (RHEL, CentOS, Rocky Linux) используется обозначение x86_64. Пакеты, собранные под архитектуру amd64 для Debian, предназначены для полноценных 64-битных систем и раскроют весь потенциал вашего оборудования.amd64/x86_64 она не имеет никакого отношения.Существует мнение, что под Debian доступны только старые версии PostgreSQL (до 9.6). Это утверждение давно потеряло актуальность. На сегодняшний день компания Postgres Professional выпускает и активно поддерживает специализированные сборки СУБД для нужд 1С (Postgres Pro 1C) для всех актуальных мажорных версий (14, 15, 16, 17) под стабильные версии Debian (11, 12). Данные сборки содержат необходимые патчи для корректной работы с платформой «1С:Предприятие», включая поддержку типов данных mchar, varchar и оптимизацию планов выполнения запросов.
Рассмотрим детально процесс подготовки операционной системы Debian для установки СУБД PostgreSQL с целью последующей работы с базами данных 1С.
Перед инициализацией кластера баз данных критически важно настроить локаль операционной системы. Если кластер PostgreSQL будет инициализирован с локалью по умолчанию (например, C или POSIX), то при попытке создания базы данных из консоли администрирования 1С вы неизбежно получите ошибку, связанную с порядком сортировки строк. Платформа 1С жестко требует поддержки русской локали с кодировкой UTF-8.
Выполним переконфигурацию локалей в Debian. Для этого в терминале запустим следующую команду:
sudo dpkg-reconfigure locales
В появившемся интерактивном меню найдем и отметим пробелом локаль ru_RU.UTF-8 UTF-8, а также en_US.UTF-8 UTF-8. На следующем шаге выберем ru_RU.UTF-8 в качестве локали по умолчанию для всей системы. Чтобы изменения вступили в силу без перезагрузки сервера, выполним команду:
sudo update-locale LANG=ru_RU.UTF-8
Для стабильной работы СУБД под высокими нагрузками настроим параметры виртуальной памяти и сетевого стека в операционной системе Debian. Откроем конфигурационный файл:
sudo nano /etc/sysctl.conf
Добавим в конец файла следующие параметры, оптимизирующие работу с памятью и предотвращающие агрессивное поведение механизма OOM Killer (который может принудительно завершить процесс PostgreSQL при нехватке памяти):
# Управление выделением памяти без избыточного резервирования
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
# Оптимизация сброса «грязных» страниц памяти на диск
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# Настройка пространства имен для разделяемой памяти (для современных версий PG значения по умолчанию обычно достаточны, но лучше зафиксировать)
kernel.shmmax = 18446744073709551615
kernel.shmall = 18446744073709551615
Применим изменения конфигурации ядра без перезагрузки системы:
sudo sysctl -p
Также настоятельно рекомендуется отключить механизм Transparent Huge Pages (THP), так как он часто приводит к фрагментации оперативной памяти и падению производительности баз данных под управлением PostgreSQL. Для этого добавим команду отключения в автозагрузку системы или настроим соответствующий сервис systemd.
Для установки специализированной СУБД воспользуемся официальным репозиторием Postgres Pro. Подключим репозиторий для нашей версии Debian (например, Debian 12) и установим СУБД (рассмотрим на примере версии 16):
# Скачиваем и устанавливаем ключ репозитория
wget -O - https://repo.postgrespro.ru/pgpro-archive/pgpro-16/keys/GPG-KEY-POSTGRESPRO | sudo apt-key add -
# Добавляем репозиторий в список источников
echo "deb https://repo.postgrespro.ru/pgpro-archive/pgpro-16/debian bookworm main" | sudo tee /etc/apt/sources.list.d/postgrespro.list
# Обновляем списки пакетов и устанавливаем СУБД для 1С
sudo apt-get update
sudo apt-get install postgrespro-1c-16-server postgrespro-1c-16-contrib
Для правильной инициализации базы данных под требования 1С воспользуемся фирменной утилитой автоматической настройки от Postgres Pro. Она автоматически создаст базу данных с правильной локалью и применит базовые оптимизационные настройки под конфигурации 1С:
sudo /opt/pgpro/1c-16/bin/pg-setup initdb --tune=1c --locale=ru_RU.UTF-8
После успешной инициализации добавим службу в автозапуск и запустим СУБД:
sudo systemctl enable postgrespro-1c-16
sudo systemctl start postgrespro-1c-16
Для достижения максимального быстродействия нам необходимо отредактировать конфигурационный файл СУБД. Настройки утилиты pg-setup дают хорошую базу, но параметры стоит адаптировать под объем оперативной памяти вашего сервера. Откроем конфигурационный файл:
sudo nano /var/lib/pgpro/1c-16/data/postgresql.conf
Проанализируем ключевые параметры и установим оптимальные значения (пример расчета приведен для сервера с 32 ГБ оперативной памяти, выделенного исключительно под СУБД):
shared_buffers = 8GB (устанавливаем примерно 25% от общего объема ОЗУ сервера).temp_buffers = 256MB (увеличенный размер буфера для временных таблиц 1С).work_mem = 128MB (объем памяти для операций сортировки одного запроса; при большом количестве параллельных пользователей уменьшайте этот параметр во избежание нехватки ОЗУ).maintenance_work_mem = 2GB (объем памяти для сервисных операций, таких как создание индексов и очистка VACUUM).effective_cache_size = 24GB (размер кэша файлов операционной системы, ориентировочно 75% от всей оперативной памяти).wal_buffers = 16MB (размер буфера транзакций).checkpoint_completion_target = 0.9 (степень размазывания записи транзакционного лога во времени для снижения пиковой нагрузки на дисковую подсистему).min_wal_size = 2GB и max_wal_size = 8GB (минимизирует частоту выполнения контрольных точек).После изменения параметров перезапустим СУБД для применения настроек:
sudo systemctl restart postgrespro-1c-16
В некоторых ИТ-инфраструктурах используется гибридная архитектура: сервер приложений «1С:Предприятие» разворачивается на операционной системе Windows Server (например, из-за необходимости использования COM-соединений или интеграции со специфическим Windows-софтом), а СУБД PostgreSQL выносится на производительный сервер под управлением Debian Linux. Рассмотрим ключевые нюансы работы такой схемы:
Сетевые задержки (Latency): Это наиболее критический фактор производительности гибридной схемы. Архитектура платформы 1С такова, что при выполнении бизнес-логики (например, проведении документов) сервер приложений отправляет к СУБД колоссальное количество мелких, последовательных запросов. Если сетевая задержка (пинг) между сервером 1С и сервером СУБД составляет более 0.5–1 мс, общая скорость проведения документов упадет в разы.
Для минимизации сетевых задержек рекомендуем придерживаться следующих правил:
Внедрение Debian в качестве платформы для СУБД PostgreSQL при работе с 1С — это абсолютно рабочее, надежное и высокопроизводительное решение. Главное — использовать специализированные сборки Postgres Pro, корректно настроить системные локали и параметры ядра Linux, а также обеспечить качественное сетевое соединение между сервером приложений и сервером баз данных.