[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 メーリングリストの案内