[pgsql-jp: 30735] Re: UPDATE文をきっかけにサーバの子プロセスが全てダウン

Tatsuo Ishii t-ishii @ sra.co.jp
2003年 8月 9日 (土) 10:58:54 JST


石井です.

> ■環境
> OS:RedHat Linux 8.0
> Web Server:Apache 1.3.27
> Web Application:PHP 4.3.2
> DB:PostgreSQL 7.3.3
> 
> ■現象
> PHPからUPDATE文が発行されたのをきっかけにPostgreSQLの
> 子プロセスが全て死んでしまいます。親プロセスは生きていますので
> 再び接続に行くと正常に行きます。

杉田さんが別メールでカーネルのファイルディスクリプタテーブルを使いきっ
た可能性の線で追っていますので,それにおまかせするとして...

> ■その他に発生している現象
> その他に発生している現象としてメモリの使用量が徐々に増えてしまっています。
> メモリは1G積んでおり、起動時は200Mほど使用しています。半日ほど経過すると
> 空きメモリ容量がなくなってしまい、スワップを使用する形となってしまいます。

「スワップを使用している」というのはどうやって確認したのですか?

また,実際にメモリがたくさん使われているとして,どのプロセスがメモリを
食っているかを確認することが重要です.たとえばApacheなのかPostgreSQLな
のか.まずそれを調べましょう.

ところで,pg_pconnect を使っているようですが,これだとPostgreSQLのバッ
クエンドが常駐するので,メモリは余計に消費する傾向になります.性能上問
題がなければ,pg_connectにしてみる,という手もあります.
(あるいはphp.iniのpgsql.allow_persistentをOffにする)

また,pg_pconnectを使うとして,php.iniの

pgsql.auto_reset_persistent
pgsql.max_persistent
pgsql.max_links

まデフォルトのままですか?それだと結構まずいですよ.

# 個人的には,pg_pconnectではなくて,pg_connect+pgpoolの人柱になっていた
# だけると嬉しいのですが:-)
--
Tatsuo Ishii



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