18.14. Обработка ошибок
exit_on_error
(boolean
)Если этот параметр включён, любая ошибка приведёт к прерыванию текущего сеанса. По умолчанию он отключён, так что сеанс будет прерываться только при критических ошибках.
restart_after_crash
(boolean
)Когда этот параметр включён (это состояние по умолчанию), Postgres Pro будет автоматически перезагружаться после сбоя серверного процесса. Такой вариант позволяет обеспечить максимальную степень доступности базы данных. Однако в некоторых обстоятельствах, например, когда Postgres Pro управляется кластерным ПО, такую перезагрузку лучше отключить, чтобы кластерное ПО могло вмешаться и выполнить, возможно, более подходящие действия.
Задать этот параметр можно только в
postgresql.conf
или в командной строке при запуске сервера.data_sync_retry
(boolean
)При выключенном значении этого параметра (по умолчанию) Postgres Pro будет выдавать ошибку уровня PANIC в случае неудачи при попытке сохранить изменённые данные в файловой системе. В результате сервер баз данных остановится аварийно. Задать этот параметр можно только при запуске сервера.
В некоторых операционных системах состояние данных в кеше внутри ядра оказывается неопределённым при ошибке записи. В каких-то случаях эти данные могут быть просто утеряны, и повторять попытку записи небезопасно: вторая попытка может оказаться успешной, тогда как на деле данные не сохранены. В этих обстоятельствах единственный способ избежать потери данных — восстановить их из WAL после такого сбоя, но перед этим желательно выяснить причину проблемы и, возможно, заменить нерабочее оборудование.
Если включить этот параметр, Postgres Pro в случае сбоя при записи выдаст ошибку, но продолжит работу в расчёте повторить операцию сохранения данных при последующей контрольной точке. Включать его следует, только если достоверно известно, как поступает система с данными в буфере при ошибке записи.
crash_info
(boolean
)Если установлено значение по умолчанию
on
, Postgres Pro записывает диагностическую информацию о сбое сервера в файл.Этот параметр можно задать только при запуске сервера.
crash_info_dump
(text
)Указывает разделённый запятыми список текстовых строк, содержащих источники данных для аварийных дампов. Возможны следующие значения строк:
queries
— тексты запросов.memory_context
— контекст памяти Postgres Pro (за подробностями обратитесь к Разделу 45.3).system
— информация об ОС.module
— информация о модулях, загруженных в процессpostgres
.cpuinfo
— информация о процессоре: число ядер, набор инструкций, и т. д.cpu_context
:Регистры контекста процессора.
Общая информация об ошибке: номер сигнала, информация о коде сигнала, PID, PID родительского процесса, идентификатор пользователя и т. д.
virtual_memory
— информация о виртуальной памятиinstruction_pointer
— байты около RIP (return instruction pointer, указатель возврата инструкции, который указывает на адрес памяти, по которому можно судить о прогрессе выполнения программы в памяти).stack
— размер стека (байты). Стек выгружается в отдельный файл из каталога, куда записывается диагностическая информация о сбоях сервера (по умолчанию
). Этот файл называется так же, как и журнал сбоев, но имеет расширениеPGDATA
/crash_info.data
. Адреса верхней и нижней границ стека записываются в журнал сбоев.
Значение по умолчанию —
system,module,queries,cpu_context,instruction_pointer
.Этот параметр можно задать только при запуске сервера.
crash_info_location
(string
)Указывает каталог, в котором должна храниться информация о сбое сервера. При значении
stderr
информация о сбое отправляется в каталог stderr. Если в этом параметре указана пустая строка''
(по умолчанию), используется каталог$PGDATA/crash_info
. Если нужно сохранять файлы в другом месте, заранее создайте целевой каталог и выдайте соответствующие права.Этот параметр можно задать только при запуске сервера.
crash_info_timer
(boolean
)Включает или отключает выгрузку состояния длительных запросов по таймеру, что позволяет профилировать такие запросы. Таймер запускается по интервалу, значение которого указывается в crash_info_timer_interval, и измеряет время обработки запроса. Когда время выполнения запроса превышает пороговое значение, указанное в crash_info_query_threshold, состояние запроса выгружается на диск. Значение по умолчанию —
off
. Чтобы таймер работал, для crash_info_dump должно быть установлено значение по крайней мереqueries
. Изменить этот параметр могут только суперпользователи командойSET
в текущем сеансе или глобально в файле конфигурации.Этот параметр можно задать только при запуске сервера в файле
postgresql.conf
. Чтобы перечитать значение параметра, перезапустите сервер или отправьте сигнал SIGHUP главному серверному процессу.crash_info_timer_interval
(integer
)Задаёт временной интервал для запуска таймера (в миллисекундах). Значение по умолчанию —
1000
. Изменить этот параметр могут только суперпользователи командойSET
в текущем сеансе или глобально в файле конфигурации.Этот параметр можно задать только при запуске сервера в файле
postgresql.conf
. Чтобы перечитать значение параметра, перезапустите сервер или отправьте сигнал SIGHUP главному серверному процессу.crash_info_query_threshold
(integer
)Задаёт пороговое значение времени обработки запроса (в миллисекундах). При достижении значения состояние запроса выгружается на диск. Значение по умолчанию —
3000
. Изменить этот параметр могут только суперпользователи командойSET
в текущем сеансе или глобально в файле конфигурации.Этот параметр можно задать только при запуске сервера в файле
postgresql.conf
. Чтобы перечитать значение параметра, перезапустите сервер или отправьте сигнал SIGHUP главному серверному процессу.