Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PERF_PGSQL_1C_CONFIG 1С:Предприятие и СУБД

Настройка PostgreSQL для 1С в Linux: shared_buffers и тюнинг памяти

Обновлено: 27.08.2026 · Официальная документация ↗

Почему PostgreSQL «из коробки» тормозит в 1С?

По умолчанию стандартный конфигурационный файл postgresql.conf настроен разработчиками СУБД на минимальное потребление ресурсов (для совместимости со слабыми серверами 20-летней давности с 512 МБ ОЗУ). Значение буфера shared_buffers по умолчанию равно смешным 128 МБ. Если не произвести базовый тюнинг, мощный сервер с 64 ГБ оперативной памяти будет работать медленнее домашнего ноутбука.

Симптомы некорректных настроек:

  • Длительное проведение документов и закрытие месяца в 1С.
  • Процессор загружен слабо, но дисковая очередь (iowait) зашкаливает.
  • Сложные отчеты и запросы с временными таблицами падают по таймауту.

Оптимальные параметры postgresql.conf для 1С:Предприятия

Откройте конфигурационный файл СУБД в текстовом редакторе Nano:

sudo nano /etc/postgresql/XX/main/postgresql.conf
# (где XX — номер версии, например 14, 15 или 16)

Рассчитанные параметры для сервера с 32 ГБ RAM (для СУБД выделено 24 ГБ):

# 1. ОСНОВНАЯ ПАМЯТЬ ДЛЯ КЭША ТАБЛИЦ (25% от всей доступной RAM для PostgreSQL)
shared_buffers = 6GB

# 2. ОЦЕНКА КЭША ФАЙЛОВОЙ СИСТЕМЫ LINUX (50-75% от всей RAM сервера)
effective_cache_size = 18GB

# 3. ПАМЯТЬ НА СОРТИРОВКИ ДЛЯ ОДНОГО ЗАПРОСА (Для 1С критично от 32MB до 128MB)
work_mem = 64MB

# 4. ПАМЯТЬ НА ОБСЛУЖИВАНИЕ (VACUUM, создание индексов)
maintenance_work_mem = 1GB

# 5. НАСТРОЙКИ СИНХРОНИЗАЦИИ И ДИСКОВ (Для быстрых SSD / NVMe накопителей)
random_page_cost = 1.1          ; Для SSD (вместо медленного дефолтного 4.0)
checkpoint_completion_target = 0.9
max_wal_size = 16GB
min_wal_size = 2GB

# 6. НАСТРОЙКИ ДЛЯ 1С (КРИТИЧЕСКИ ВАЖНО!)
escape_string_warning = off
standard_conforming_strings = off
bytea_output = 'escape'

Шаг 2. Применение параметров и перезапуск PostgreSQL

Сохраните файл (Ctrl+O, Enter, Ctrl+X) и перезапустите службу СУБД:

sudo systemctl restart postgresql
sudo systemctl status postgresql
💡 Практика специалистов: В Linux всегда отключайте Transparent Huge Pages (THP) и снижайте параметр vm.swappiness до 1–10 в файле /etc/sysctl.conf. Агрессивный сброс памяти PostgreSQL в Swap со стороны ядра Linux — главная причина внезапных 5-секундных фризов в 1С.

Частые вопросы (FAQ)

Почему shared_buffers ставят 25% от RAM, а не 80% как в MS SQL?

PostgreSQL использует двойное кэширование: он полагается не только на собственный буфер shared_buffers, но и на кэш страниц самой операционной системы Linux (Page Cache). Значение выше 40% часто приводит к падению производительности из-за дублирования данных.

Где скачать правильный PostgreSQL с патчами для 1С?

Стандартный ванильный PostgreSQL с официального сайта не умеет корректно работать со специфическими запросами 1С. Используйте бесплатную оптимизированную сборку «PostgreSQL 1C» от компании Postgres Professional.

Что делает параметр standard_conforming_strings = off?

Платформа 1С использует обратные слэши для экранирования строк в стиле старого стандарта SQL. Без этого параметра многие типовые запросы 1С будут падать с синтаксической ошибкой.

Как проверить, применились ли новые параметры без просмотра файла?

Подключитесь к консоли psql (sudo -u postgres psql) и выполните запрос: SHOW shared_buffers; или SELECT name, setting, unit FROM pg_settings WHERE name IN ('shared_buffers', 'work_mem');.

Полезные материалы
Рекомендуем