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

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

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

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

PostgreSQL Error 57P02: crash_shutdown — аварийное падение и отладка

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка в клиенте: FATAL: the database system is in recovery mode (SQLSTATE 57P02) или server closed the connection unexpectedly.
  • В логах СУБД: LOG: server process (PID ...) was terminated by signal 9 (or signal 11).
  • PostgreSQL перезапускает все дочерние процессы и запускает процедуру Redo/Undo восстановления по WAL.

1. Анализ системного журнала ядра на OOM Killer (Signal 9)

dmesg -T | grep -Ei "oom[_-]killer|killed process postgres"

Если процесс убит ядром, настройте vm.overcommit_memory = 2 и уменьшите shared_buffers.

2. Поиск аварийных сбоев сегментации (Signal 11 / SIGSEGV)

journalctl -u postgresql -k --since "2 hours ago" | grep -Ei "segfault|core dump"

3. Мониторинг процесса Crash Recovery в логах PostgreSQL

tail -n 100 /var/log/postgresql/postgresql-*.log

Вы увидите сообщения: LOG: database system was not properly shut down; automatic recovery in progress.

4. Проверка целостности файловой системы и оперативной памяти

# Тест RAM
memtester 16G 1
# Проверка SMART дисков
smartctl -a /dev/nvme0n1
💡 Практика специалистов: Если PostgreSQL упал с кодом 57P02 из-за сбоя оборудования, никогда не удаляйте WAL логи вручную через rm — это приведет к полному разрушению базы.

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

Почему один упавший backend-процесс приводит к перезапуску всего PostgreSQL?

Все дочерние процессы разделяют общую память (shared_buffers). Если один процесс падает аварийно (SIGSEGV/SIGKILL), ядро СУБД не может гарантировать целостность структур shared memory и перезапускает все сессии для безопасного восстановления.

Что делать, если СУБД зависла в режиме Crash Recovery?

Не прерывайте процесс повторным перезапуском. Дождитесь проигрывания всех WAL записей до точки консистентности (checkpoint).

Могут ли сторонние расширения (C-extensions) вызывать ошибку 57P02?

Да, ошибки работы с памятью в C-расширениях (например, PostGIS или кастомных плагинах) часто приводят к сигналу SIGSEGV и crash_shutdown.

Как защитить основной процесс postmaster от Linux OOM Killer?

Задайте параметр OOMScoreAdjust=-1000 в файле конфигурации сервиса systemd (/lib/systemd/system/postgresql.service).

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