База сама закрыла соединения сервисов RX
Ошибки 57P01 и 57P03 в логах Directum RX: PostgreSQL оборвал соединения из-за перезапуска, остановки или ручного завершения сессий. Как понять, что произошло, и когда это повод для разбора.
Что это значит
PostgreSQL сам закрыл соединение. Код 57P01 означает, что сессию завершили по команде: сервер останавливали, перезапускали, переключали на реплику или кто-то выполнил pg_terminate_backend. Код 57P03 приходит, когда база ещё поднимается или уже останавливается и новые соединения не принимает.
Для пользователей это ошибки в момент операции, которая шла через оборванное соединение. Фоновые задания RX в это время тоже падают и уходят на повтор.
Как проверить
- Журнал PostgreSQL за то же время:
grep -E "received (fast|smart) shutdown|database system is ready|terminating connection" /var/log/postgresql/*.log
- Сколько база работает с последнего запуска:
select pg_postmaster_start_time();
- Если перезапуска не было, искать, кто завершал сессии: скрипты обслуживания, ручные действия администратора,
idle_in_transaction_session_timeout(у него свой текст ошибки).
Что сделать
- Перезапуск в окно обслуживания: ошибки ожидаемы, после него сервисы переподключаются сами.
- Перезапуск вне окна: разобрать причину по журналу базы (нехватка памяти, падение процесса, переключение кластера).
- Не завершать сессии RX массово без нужды: обрываются в том числе фоновые операции, которые потом повторяются с начала.
- Плановые работы с базой согласовывать с окнами, когда пользователей мало, и предупреждать администратора RX.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать