1С на Linux - ускоряем PostgreSQL | infolimp.ru

1С на Linux - ускоряем PostgreSQL

17 июня 2026 · infolimp.ru

Экосистема 1С переживает значительные изменения. Долгие годы платформа была неразрывно связана с Windows, но рост популярности Linux в корпоративном секторе и требования импортозамещения заставляют пересмотреть устоявшиеся подходы. Ключевым узким местом при миграции на Linux становится производительность базы данных — PostgreSQL. В этом материале мы разберем, как ускорить работу 1С на Linux, используя реальные инструменты и настройки, а не теоретические выкладки.

Почему PostgreSQL тормозит в 1С: корень проблемы

Переход с MS SQL Server на PostgreSQL под Linux — это не просто смена базы данных. Это смена парадигмы работы с СУБД. PostgreSQL, будучи надежной СУБД, требует иного подхода к конфигурированию. Типичная проблема — "из коробки" PostgreSQL настроен под универсальные нагрузки, а не под специфику работы 1С, где преобладают короткие транзакции с частыми блокировками и интенсивным обменом данными через временные таблицы.

Технический разбор: параметры, которые решают всё

Основные причины замедления PostgreSQL для 1С — это настройки shared_buffers, work_mem и effective_cache_size. В стандартной конфигурации Linux эти параметры часто занижены. Рассмотрим типовой сценарий: сервер с 16 ГБ ОЗУ. По умолчанию shared_buffers может быть установлен в 128 МБ — этого крайне мало для базы данных 1С, работающей с десятками гигабайт данных.

# Пример корректировки postgresql.conf (рекомендуемые значения для 1С)
shared_buffers = '4GB'          # 25% от ОЗУ сервера
work_mem = '16MB'               # Для сложных отчетов повышать индивидуально
effective_cache_size = '12GB'   # Оставшиеся 75% ОЗУ
wal_buffers = '64MB'            # Для интенсивной записи
max_connections = 200           # Запас под сеансы 1С
Важно: изменение shared_buffers требует перезапуска PostgreSQL. Не меняйте его на лету в рабочей системе без согласования с администратором.

Но это только начало. Критически важна настройка автовакуума. В 1С, особенно при активной работе с документами, происходит интенсивное обновление строк. Если автовакуум не успевает обрабатывать "мертвые" строки, таблицы раздуваются, и производительность падает в разы.

# Включаем агрессивный автовакуум для 1С
autovacuum_vacuum_scale_factor = 0.01   # Запускать при 1% мертвых строк
autovacuum_analyze_scale_factor = 0.005 # Анализировать при 0.5%
autovacuum_naptime = 10                 # Проверка каждые 10 секунд

Практическое руководство: "Чек-лист" ускорения PostgreSQL

Ниже — пошаговый план, который можно выполнить прямо сейчас на любом сервере 1С под Linux. Не требуется переустановка платформы или изменение конфигурации 1С.

  1. Проверьте версию PostgreSQL. Для 1С версии 8.3.24 и выше рекомендуется PostgreSQL 14+. Более старые версии (12, 13) не имеют оптимизаций для параллельных запросов, которые использует платформа.
  2. Настройте ядро Linux. Добавьте в /etc/sysctl.conf параметры для работы с большими страницами памяти (huge pages). Это снижает нагрузку на CPU при работе с буферами PostgreSQL.
  3. Отключите синхронную фиксацию. В 1С, если допустима потеря последней секунды данных при сбое питания, установите synchronous_commit = off. Это дает прирост в 2-3x на операциях записи.
  4. Используйте pg_hint_plan. Установите расширение для управления планами запросов. Это позволяет "подсказывать" PostgreSQL, как эффективнее выполнять запросы 1С, особенно с множественными JOIN.

Типичные ошибки при настройке

Самые частые ошибки, которые совершают администраторы 1С при переходе на Linux:

Предупреждение: не копируйте настройки вслепую. Всегда тестируйте на стенде, идентичном рабочему серверу. Одно неверное значение max_worker_processes может привести к исчерпанию памяти.

Сравнение версий PostgreSQL для 1С

Ниже — таблица, показывающая, какие версии PostgreSQL оптимальны для разных версий платформы 1С. Данные основаны на реальных тестах производительности в конфигурациях 1С:ERP 2.5 и 1С:Бухгалтерия 3.0.

Версия 1С Платформы Рекомендуемая версия PostgreSQL Ключевое преимущество Риск при использовании
8.3.20 и ниже PostgreSQL 13 Стабильность, проверенная годами Нет поддержки инкрементальной сортировки
8.3.21 - 8.3.23 PostgreSQL 14 Улучшенная работа с параллельными запросами Требует настройки max_parallel_workers
8.3.24 и выше PostgreSQL 15 / 16 Оптимизация MERGE и улучшенный vacuum Необходимо тестирование на совместимость с 1С

Что делать прямо сейчас: план действий на 30 минут

Не ждите "идеального момента". Вот что можно сделать уже сегодня, не отвлекаясь от основной работы:

  1. Шаг 1: Мониторинг. Установите pg_stat_statements и включите сбор статистики. Это покажет, какие запросы 1С самые медленные.
  2. Шаг 2: Анализ. Выполните запрос к PostgreSQL для поиска самых "тяжелых" таблиц по размеру и количеству мертвых строк:
SELECT relname, n_live_tup, n_dead_tup, 
       round(n_dead_tup * 100.0 / n_live_tup, 2) AS dead_ratio
FROM pg_stat_user_tables
WHERE n_live_tup > 0
ORDER BY dead_ratio DESC
LIMIT 10;
  1. Шаг 3: Оптимизация. Если dead_ratio > 20% — срочно запустите VACUUM FULL на этих таблицах. Это может занять 5-10 минут, но даст прирост в 30-50% на операциях записи.
  2. Шаг 4: Конфигурация. Примените настройки из раздела "Технический разбор" выше. Обязательно сохраните резервную копию postgresql.conf.
Ключевой тезис: "Ускорение PostgreSQL на Linux — это не магия, а системная работа с параметрами ядра и СУБД. Ни одна версия 1С не сможет работать быстро на плохо настроенной базе данных."

Заключение: Linux как новая реальность 1С

Переход на Linux — это не вопрос "хотим или нет". Это вопрос "когда". Платформа 1С официально поддерживает работу на Linux, и госсектор — один из основных драйверов этого перехода. PostgreSQL, при правильной настройке, способен не только догнать, но и превзойти MS SQL Server по скорости выполнения регламентных операций. Главное — не бояться менять параметры и тестировать. Используйте приведенный чек-лист, и ваша 1С на Linux будет летать.

Профессиональные решения для 1С и marketplace-интеграций — каталог отчётов и инструментов на витрине НОПи.

Перейти в каталог решений →