PostgreSQL для 1С: 7 шагов настройки сервера на Windows и Linux
Чтобы 1С на PostgreSQL не тормозила, поставьте сборку СУБД с патчами для 1С, разместите данные на SSD, поднимите shared_buffers примерно до четверти ОЗУ, увеличьте temp_buffers и max_locks_per_transaction, откройте порт 5432 только серверу 1С и включите автоочистку. Linux лучше переносит много соединений, Windows нужен, если база работает с COM-объектами и Excel.
🐘 Почему PostgreSQL «из коробки» тормозит 1С на мощном сервере
Возьмём типичный случай. Компания ставит сервер на 64 ГБ памяти с быстрыми дисками, админ запускает установщик PostgreSQL и жмёт «Далее» до конца. Первый месяц база работает. Потом наступает закрытие периода: бухгалтерия запускает перепроведение документов, склад в это же время оформляет отгрузки, и 1С начинает подвисать. Отчёт по продажам грузится минутами, а загрузка процессора низкая и память почти свободна.
Причина в значениях по умолчанию. PostgreSQL рассчитан на запуск на любой машине, поэтому берёт shared_buffers в 128 МБ, work_mem в 4 МБ и max_connections в 100. Памяти на сервере много, но СУБД о ней не знает. 1С при этом постоянно создаёт временные таблицы, а планировщик без нужных настроек и свежей статистики выбирает плохие планы запросов. Поэтому покупка более мощного железа почти ничего не меняет: сервер упирается в настройки, а не в ресурсы.
Ставка выше, чем несколько потерянных минут. Бухгалтерия сидит вечерами при обычной оплате, отчётность съезжает к последнему дню срока, а за просрочку декларации полагается штраф по статье 119 НК РФ. Склад не отгружает, пока не проведена реализация, и машина клиента стоит у ворот. Проверить, ваш ли это случай, можно за минуту: выполните в psql команду SHOW shared_buffers;. Если там 128MB, причина найдена. Остальное исправляется за семь шагов.
⚖️ Windows или Linux: что выбрать под PostgreSQL для 1С
Выбор ОС определяют не бенчмарки, а окружение базы: есть ли обмены через COM, кто будет администрировать, сколько сеансов работает одновременно. Сравнение по тому, что реально влияет на решение:
| Критерий | Windows Server | Linux |
|---|---|---|
| Лицензия ОС | Платная, плюс клиентские лицензии при работе через терминал | Debian и Ubuntu бесплатны, Astra Linux и РЕД ОС лицензируются |
| Много одновременных сеансов | Запуск процесса PostgreSQL обходится дороже, на большом числе соединений это заметно | Процессы создаются дешевле, запас по соединениям больше |
| COM-обмены, Excel и Word на сервере | Работают | Недоступны, такие обмены переписывают на веб-сервисы или файлы |
| Администрирование | Знакомо большинству сисадминов, настройка через службы и RDP | Консоль, systemd, скрипты и cron; нужен админ, который работает в терминале |
| Когда выбирать | Небольшая база, много Windows-интеграций | Много активных сеансов, ERP, экономия на лицензиях |
Для небольшой бухгалтерии без нагрузки разница незаметна, и Windows экономит время админа. Когда активных сеансов много или база идёт под ERP, Linux даёт запас по соединениям и снимает расходы на лицензию ОС. Версию платформы и ОС сверьте с таблицей в системных требованиях 1С: не каждый релиз платформы поддерживает каждый дистрибутив.
Шаги 1–3: сборка, диски и установка
Шаг 1. подберите сборку PostgreSQL под вашу платформу
Платформа 1С рассчитана на сборку PostgreSQL с патчами. Её берут на сайте релизов 1С или используют Postgres Pro. Чистый PostgreSQL с сайта проекта для рабочей базы не берите. Нужную версию определяет релиз платформы, ориентир здесь таблица совместимости. Обновление платформы без этой проверки оставляет вас с СУБД, которую новый релиз уже не поддерживает.
Шаг 2. подготовьте диски и систему
Данные кладите на SSD, лучше NVMe, отдельным разделом. Для зеркала берите RAID-1 или RAID-10: RAID-5 замедляет запись журнала WAL, а 1С пишет много. На Windows добавьте каталог данных в исключения антивируса и включите план электропитания «Высокая производительность». На Linux используйте ext4 или XFS, снизьте vm.swappiness и отключите transparent huge pages.
Шаг 3. установите PostgreSQL
На Windows запустите установщик сборки, укажите каталог данных на SSD-разделе, порт 5432 и русскую локаль, задайте пароль пользователю postgres. Служба стартует автоматически. На Linux поставьте пакеты из репозитория поставщика сборки и инициализируйте кластер с локалью ru_RU.UTF-8. Если такой локали нет в системе, сначала сгенерируйте её через locale-gen. Службу включите в автозапуск через systemd.
⚙️ Шаг 4: postgresql.conf и pg_hba.conf
Значения ниже стартовые. Их пересчитывают под объём памяти и число сеансов, а затем проверяют замером.
- ✓shared_buffers — около четверти ОЗУ вместо 128 МБ по умолчанию.
- ✓effective_cache_size — от половины до трёх четвертей ОЗУ. Память он не выделяет, а подсказывает планировщику, сколько данных, скорее всего, лежит в кэше.
- ✓temp_buffers — 256 МБ, потому что 1С работает с временными таблицами постоянно. Память занимается по мере использования, но на сотне сеансов оставляйте запас.
- ✓work_mem — поднимайте осторожно. Лимит действует на каждую сортировку и каждое хеширование в каждом сеансе, поэтому «щедрые» десятки мегабайт при сотне сеансов превращаются в гигабайты.
- ✓max_locks_per_transaction — 256 вместо 64: запросы 1С затрагивают много таблиц.
- ✓max_wal_size — несколько гигабайт, иначе контрольные точки идут слишком часто как раз во время массового проведения.
- ✓random_page_cost — 1.1 вместо 4 для SSD.
- ✓standard_conforming_strings и escape_string_warning — off, как рекомендует документация 1С.
- ✓autovacuum_naptime — 20 секунд вместо минуты, чтобы статистика обновлялась чаще.
- ✓max_connections — по умолчанию 100; считайте от числа сеансов и рабочих процессов, ведь каждое соединение — отдельный процесс PostgreSQL.
Параметры fsync и full_page_writes не отключайте: прирост скорости обернётся повреждённой базой после первого сбоя питания. После правок перезапустите службу, потому что shared_buffers и max_locks_per_transaction подхватываются только при перезапуске.
В pg_hba.conf оставьте строку только для адреса сервера 1С. Если СУБД и кластер стоят на одной машине, хватит 127.0.0.1. Порт 5432 на файрволе закройте для всех остальных: открытый порт с паролем postgres становится готовой мишенью для перебора.
Если ставите Postgres Pro, подключите расширение online_analyze через shared_preload_libraries. Оно обновляет статистику временных таблиц сразу после наполнения, и планировщик не работает вслепую.
Шаги 5–6: сервер 1С и первая база
Шаг 5. установите сервер 1С и откройте порты
Поставьте серверную часть платформы, желательно того же релиза, что стоит на рабочих местах. На Windows агент сервера работает как служба, на Linux его ставят из пакетов и запускают от пользователя usr1cv8. Между клиентами и сервером 1С откройте порты 1540 (агент), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Наружу эти порты не публикуйте: доступ из дома даёт VPN.
Шаг 6. создайте базу через консоль кластера
В консоли администрирования создайте информационную базу: тип СУБД — PostgreSQL, сервер баз данных — адрес машины с СУБД, пользователь — postgres, смещение дат — 0 (значение 2000 нужно только для MS SQL). Отметьте «Создать базу данных в случае её отсутствия», затем загрузите данные из выгрузки .dt через конфигуратор.
Пока база небольшая, сервер 1С и PostgreSQL живут на одной машине. Когда нагрузка растёт, СУБД выносят на отдельный хост с быстрыми дисками, и под такую схему подходит выделенный сервер в аренду. Для 1С:ERP отдельный хост под СУБД закладывают сразу, а подобрать конфигурацию помогает страница сервер под 1С:ERP.
🔧 Шаг 7: автоочистка, бэкапы и замер
Автоочистка (autovacuum) должна быть включена. На таблицах регистров с большим оборотом порог автоанализа по умолчанию срабатывает поздно, и там помогает ночной vacuumdb --analyze.
Для бэкапа небольшой базы хватит pg_dump по расписанию. Для большой нужны pg_basebackup и архив журналов WAL, чтобы восстановиться на момент перед сбоем. Выгрузка .dt требует монопольного доступа, поэтому остаётся дополнительной копией, а не основной. Раз в квартал разверните копию на соседней машине: бэкап, который ни разу не восстанавливали, проверен только наполовину.
Результат замеряйте тестом Гилёва до и после правок и сравнивайте свои два результата. Чужие цифры из рейтинга ничего не скажут о вашей базе.
💼 Сколько стоит собрать самому и что даёт аренда
Все семь шагов выполнимы своими силами, но нужен человек, который одинаково уверенно работает и с PostgreSQL, и с кластером 1С. Если приглашать внешнего администратора, час его работы стоит 3800 ₽. Установка сборки, расчёт параметров, подключение кластера и проверка бэкапов обычно занимают несколько часов, а дальше связку нужно обслуживать.
Второй путь: не собирать её самому. Аренда сервера 1С стоит от 1 100 ₽/мес за пользователя, то есть на 10 человек от 11 000 ₽ в месяц, без покупки железа и без администратора в штате. Небольшой базе хватит виртуального сервера для 1С.
Если сервер у вас уже есть, а нужна только правильная настройка, закажите настройку сервера 1С: поставим сборку PostgreSQL, посчитаем параметры под ваши ОЗУ и диски, подключим кластер и настроим бэкапы. Тест Гилёва до и после покажет, что изменилось.
❓ Частые вопросы
Можно ли использовать обычный PostgreSQL с официального сайта для 1С?
Для рабочей базы лучше не использовать. Платформа 1С рассчитана на сборку PostgreSQL с патчами: её публикует 1С на сайте релизов, подходит и Postgres Pro. На тестовой базе чистый PostgreSQL может запуститься, но поведение при проведении документов и работе с временными таблицами никто не гарантирует.
Что быстрее для 1С: PostgreSQL на Windows или на Linux?
На небольшой нагрузке разница незаметна. Когда сеансов много, Linux лучше переносит большое число соединений, потому что процессы PostgreSQL создаются там дешевле. Windows выбирают, если базе нужны COM-обмены и работа с Excel или Word на стороне сервера. Точный ответ для вашей базы даст замер тестом Гилёва до и после.
Какие параметры PostgreSQL поменять в первую очередь для 1С?
Начните с shared_buffers (около четверти ОЗУ вместо 128 МБ), effective_cache_size, temp_buffers, max_locks_per_transaction (256) и random_page_cost для SSD. Затем проверьте автоочистку и max_wal_size. Часть параметров, включая shared_buffers и max_locks_per_transaction, вступает в силу только после перезапуска службы. Все значения стартовые: после изменений прогоните тест и сравните с результатом до настройки.
Сколько стоит арендовать сервер 1С вместо самостоятельной настройки?
Аренда сервера 1С стоит от 1 100 ₽ в месяц за пользователя, то есть на 10 человек от 11 000 ₽ в месяц. Железо покупать не нужно. Если сервер уже есть и нужна только настройка, час работы сисадмина стоит 3800 ₽. Итоговая сумма зависит от числа пользователей и размера базы.
Как защитить PostgreSQL от доступа извне?
Закройте порт 5432 на файрволе для всех адресов, кроме сервера 1С. В pg_hba.conf оставьте одну строку с адресом этого сервера, а при совмещении СУБД и кластера на одной машине только 127.0.0.1. Смените пароль пользователя postgres на длинный и не раздавайте его никому, кроме администратора СУБД.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

