2009年2月28日土曜日

postgresqlのslow-log

基本的なことなのかも知れませんが、postgresql用スローログの取得方法についてメモ。
僕のテストサーバーでのPostgresqlバージョンは7.4.12です。

1)postgresql.confの設定(ソースからインストールした場合は/usr/local/pgsql/data下にあります)
syslog = 2 # range 0-2; 0=stdout; 1=both; 2=syslog
log_min_duration_statement = 100 # milliseconds
syslog_facility = 'LOCAL0' # この設定はなくてもOK?
を追加。(クエリ実行に100ミリ秒以上かかったクエリをsyslogへ出力。facilityはlocal0に設定)

2)/etc/syslog.confの設定
local0.* /var/log/postgres
を追加。(facility0を/var/log/postgresへログ出力)
*.info;mail.none;authpriv.none;cron.none /var/log/messages
をコメントアウトして
*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages
を追加。(これがないと/var/log/messagesと/var/log/postgresの両方にログが出てしまう)

3)postgresqlとsyslogを再起動
# /sbin/service postgres reload
# /sbin/service syslog restart
以上で、実行に時間のかかるクエリのログが取得できます。
他にもpostgresql.confでいろいろ設定できるようなので、試してみる価値ありそうです。

これ試してみて、サーバーが重くなったら即時に設定を元に戻してpostgresqlとsyslogを再起動してください。

以上。・゚・(ノε`)・゚・。

0 件のコメント: