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

Сообщения отладки

postmaster изредка выводит сообщения, которые бывают часто полезными при поиске неисправностей. Если ты хочешь видеть сообщения отладки postmaster, то ты можешь запустить его с опцией -d и перенаправить выводи в log файл:

% postmaster -d >& pm.log &
Если ты не хочешь видеть эти сообщения, то можешь набрать
% postmaster -S
и postmaster будет безмолвен. Заметим, что нет амперсанда ("&") в конце строки последнего примера, поэтому postmaster будет работать в интерактивном режиме.

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 = 1option+               
# set option = 1 option-    
# set option = 0 
Заметьте, что ключевым словом также может быть аббревиатура названия опции, определённой в backend/utils/misc/trace.c.

Смотри в Использование pg_options полный список опций ключевых слов и возможных значений.


Предыдущий Начало Следующий
Проблемы подключения клиента В начало главы Восстановление базы данных


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