Руководство администратора по PostgreSQL
Предыдущий Глава 7. Рабочая среда Следующий

Использование pg_options

Замечание: При содействии Massimo Dal Zotto

Необязательный файл data/pg_options содержит опции выполнения, используемые сервером для управления трассировкой сообщений и другие настраиваемые параметры сервера. Файл перечитывается сервером при приеме сигнала SIGHUP, что дает возможность изменять опции выполнения на лету без перезапуска Postgres. Опции, указанные в этом файле, могут быть флагами отладки, используемые пакетом трассировки (backend/utils/misc/trace.c) или числовыми параметрами, которые могут использоваться сервером для управления его работой.

Все опции pg_options при запуске сервера установлены в ноль. Новые или измененные опции будут читаться всеми новыми серверами при их запуске. Чтобы сделать действительными любые изменения для всех запущенных серверов, нужно послать SIGHUP в postmaster. Сигнал будет автоматически послан всем серверам. Также мы можем включить изменения только для определенных серверов, посылая им сигнал SIGHUP напрямую.

pg_options также можно указать в ключе -T Postgres:

postgres options -T "verbose=2,query,hostlookup-"

Функции, используемые для печати ошибок и сообщений отладки теперь могут использовать удобства syslog(2). Сообщения, печатающиеся в stdout или stderr, предваряются временной отметкой и pid сервера:

#timestamp          #pid    #message
980127.17:52:14.173 [29271] StartTransactionCommand
980127.17:52:14.174 [29271] ProcessUtility: drop table t;
980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full
980127.17:52:14.186 [29286] Async_NotifyHandler
980127.17:52:14.186 [29286] Waking up sleeping backend process
980127.19:52:14.292 [29286] Async_NotifyFrontEnd
980127.19:52:14.413 [29286] Async_NotifyFrontEnd done
980127.19:52:14.466 [29286] Async_NotifyHandler done

Этот формат улучшает читабельность logs и позволяет точно понять какой сервер что делал и в какое время. Это также облегчает написание простых сценариев awk или perl, которые проверяют log для обнаружения ошибок базы данных и проблем, или для вычисления временной статистики по транзакциям.

Сообщения, выводящиеся в syslog, используют log возможность LOG_LOCAL0. Использование syslog можно контролировать с помощью syslog pg_option. К сожалению, многие функции вызывают напрямую printf() для печати своих сообщений в stdout или stderr и этот вывод не может быть перенаправлен в syslog или иметь временных отметок. Рекомендуется, чтобы все вызовы printf замещались макросами PRINTF и вывод в stderr использовал бы EPRINTF, для того чтобы мы могли контролировать весь вывод в стандартном виде.

Формат файла pg_options следующий:

# commentoption=integer_value  
# set value for optionoption                
# set option = 1 option+ 
# set option = 1 option- 
# set option = 0
Заметьте, что ключевым словом также может быть аббревиатура названия опции, определённой в backend/utils/misc/trace.c.

Пример 7-1. Файл pg_options

Например мой файл pg_options содержит следующие значения:

verbose=2
query
hostlookup
showportnumber

Распознаваемые опции

В настоящий момент определены следующие опции:

all
Флаг глобальной трассировки. Допустимые значения:
0
Сообщения трассировки разрешаются индивидуально
1
Разрешены все сообщения трассировки>
-1
Запрещены все сообщения трассировки
verbose
Флаг подробностей. Допустимые значения:
0
Нет сообщений. По умолчанию.
1
Печатать информационные сообщения.
2
Печатать более информативные сообщения.
query
Флаг трассировки запроса. Допустимые значения:
0
Не печатать запрос.
1
Печатать сжатый запрос в одну строку.
4
Печатать полный запрос.
plan
Печатать план запроса.
parse
Печатать после разбора.
rewritten
Печатать переписанный запрос.
parserstats
Печатать статистику разборщика.
plannerstats
Печатать статистику планировщика.
executorstats
Печатать статистику исполнителя.
shortlocks
В настоящий момент не используется, но необходима для использования в будущем.
locks
Трассировка блокировок.
userlocks
Трассировка блокировок пользователя.
spinlocks
Трассировка spin блокировок.
notify
Трассировка уведомляющих функций.
malloc
В настоящий момент не используется.
palloc
В настоящий момент не используется.
lock_debug_oidmin
Минимальный oid для трассировки блокировок.
lock_debug_relid
Если oid не равно нулю, то трассировка блокировок.
lock_read_priority
В настоящий момент не используется.
deadlock_timeout
Таймер проверки взаимных блокировок.
syslog
Флаг syslog. Допустимые значения:
0
Сообщения в stdout/stderr.
1
Сообщения в stdout/stderr и syslog.
2
Сообщения только в syslog.
hostlookup
Разрешить поиск имени хоста в ps_status.
showportnumber
Разрешить отображение номера порта в ps_status.
notifyunlock
Разблокировка pg_listener после уведомления.
notifyhack
Удалять дубликаты кортежей из pg_listener.

Предыдущий Начало Следующий
Запуск postmaster В начало главы Безопасность


Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости