[pgsql-jp: 33307] idle状態のpostgresプロセスが残ってしまう
Y.Watanabe
yuw @ msj.biglobe.ne.jp
2004年 6月 17日 (木) 15:41:32 JST
渡辺です。
PHP4.3.6 + PostgreSQL7.2.3 + Redhat9
という環境でWeb-DBサーバを運用しています。
ずいぶん前から、ときどき、idle状態のpostgresプロセスが残ってしまう
現象が発生しており、困っています。
$ ps ax | grep postgres
23486 ? S 12:24 postgres: stats buffer process
23487 ? S 11:07 postgres: stats collector process
4218 ? S 0:01 postgres: dbuser mydbname [local] idle
23274 ? S 0:01 postgres: dbuser mydbname [local] idle
2413 ? S 0:01 postgres: dbuser mydbname [local] idle
上記のidle状態のプロセスが長いときで少なくとも10分以上残ったままです。
このまま数時間ほったらかしておくとこれらのプロセスは消えますが。
PHPスクリプト上では pg_connect (非持続的接続) でDBに接続しにいっており、
pg_close()は発行しておりません。
PHPのマニュアルによると、ほっといてもPHPスクリプトの
終了時にDB接続がきられるはずなので・・・。
観察していると、どうも、サーバーへのWebアクセスが増えると
残ってしまうプロセスも増えやすいようです。
apacheの設定は
Timeout 60
KeepAlive Off
MinSpareServers 5
MaxSpareServers 5
StartServers 5
MaxClients 50
MaxRequestsPerChild 100
といった感じです。
たとえばPostgreSQLサーバ側の設定で、
一定時間以上idle状態のままの接続は自動的に切断してくれるような
オプションなんてないのでしょうか。
pgsql-jp メーリングリストの案内