Почему PostgreSQL долго запускается на Windows и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто системные администраторы сталкиваются с ситуацией, когда служба PostgreSQL на Windows перестает корректно запускаться или процесс старта занимает критически долгое время (до 30 минут). Рассмотрим подробнее, почему это происходит и как настроить сервер для стабильной работы.

Выясним причину возникновения проблемы

Основная причина такого поведения — некорректное завершение работы службы PostgreSQL. В среде Windows при выключении компьютера система часто просто «убивает» процессы, если они не успевают остановиться в отведенный тайм-аут. Если PostgreSQL не успевает выполнить checkpoint (сброс данных из оперативной памяти на диск), то при следующем включении база данных помечается как «несогласованная».

При запуске сервер начинает процесс аварийного восстановления (Crash Recovery). Он анализирует журналы предзаписи WAL, чтобы «откатить» незавершенные транзакции и обеспечить целостность данных. Именно этот процесс и занимает те самые 15–30 минут, которые вы наблюдаете.

Разберем по шагам, как правильно останавливать сервер

Чтобы избежать принудительного восстановления данных, важно приучить систему к корректному завершению работы. Никогда не полагайтесь на автоматическое выключение Windows, если база данных активна.

  1. Открывайте командную строку от имени администратора.
  2. Выполняйте команду принудительной остановки службы: net stop postgresql-x64-9.6 (имя службы может отличаться в зависимости от версии).
  3. После ввода команды перейдите в папку pg_log.
  4. Дождитесь появления в лог-файле записи: database system is shut down.
  5. Только после появления этого сообщения выключайте или перезагружайте сервер.

Настроим параметры checkpoint в конфигурационном файле

Если сервер продолжает работать нестабильно, необходимо проанализировать файл postgresql.conf. Параметры, связанные с контрольными точками, напрямую влияют на скорость записи и восстановления. Рассмотрим, как их можно настроить для повышения стабильности:

Откройте конфигурационный файл postgresql.conf в текстовом редакторе и обратите внимание на параметры:


# Пример настроек checkpoint
max_wal_size = 1GB
min_wal_size = 80MB
effective_cache_size = 4GB

Важно: убедитесь, что эти строки не закомментированы (нет символа # в начале строки). Если они были закомментированы, система использовала дефолтные значения, которые могли быть неоптимальны для вашей нагрузки. Настройка max_wal_size позволяет серверу реже совершать запись на диск, однако слишком большие значения могут увеличить время восстановления при сбое, поэтому подбирайте их исходя из объема вашей базы данных.

Дополнительные рекомендации по стабильности

Помимо настроек checkpoint, проанализируем еще два критических аспекта:

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

← На главную