[pgsql-jp: 41380] Re: データベース接続台数を知る方法について

MauMau maumau307 @ gmail.com
2013年 4月 24日 (水) 21:56:31 JST


MauMauです。

From: "小沢 和也 (Kazuya Ozawa)" <ozawa @ nippa.co.jp>
> ログから調べてみましたところ、以下の事がわかりました。
>
>
> Postgresがtemplate1にpostgresユーザで接続して何かの自動処理をしているとき、 
> 
> SELECT count(*) FROM pg_stat_activity WHERE usename='MyUser'
> は接続拒否される(?)
> コマンド失敗したのでDisconnectをしたが、Postgresでは自動処理が
> 終わるまで、Disconnectもできなくて、Connectしたままになっている。
> これが接続数が合わない原因となっている。つまり、他の接続とは、
> 切断できない自分自身である。
>
>
> この自動処理は、外部からの接続(ローカルホストでない)があった後に
> 実行されるみたいです。これが何をやっているのかはよくわかりませんが、
> 完全に終了して、Disconnectが可能になるまで、12分間かかっています。
> 外部接続の無かった土日には行われていませんでした。
>
> Configの設定とかで、この処理を止めることはできないのでしょうか。
> (止める事によって他に影響があるかもしれませんが)

8.0ではtemplate1に接続するような自動処理は思いつきません。

だれがどんな処理をしているか調べるために、PostgreSQLのサーバログファイルにログを追加してみてはいかがでしょう。
postgresql.confに次のようなパラメータを設定します。

log_connections = on
log_disconnections = on
log_statement = 'all'
log_min_error_statement = 'debug5'

これらのすべてが8.0にあるかは、マニュアルをご覧ください。
最後のパラメータ値は、大量のデバッグログを出します。
それが許容できそうでなければ、debug5〜debug1のどれかを設定します。
数字が小さいほどログが少なくなりますが、処理を特定できる可能性も低くなります。 



以上です。




pgsql-jp メーリングリストの案内