Настройка PostgreSQL для 1С в Linux: shared_buffers и тюнинг памяти
Почему 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 Частые вопросы (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');.