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

Noriyuki TAKEI noriyuki.takei @ jalinfotec.co.jp
2003年 8月 9日 (土) 22:02:49 JST


武井です。ご返信ありがとうございます。

> ;;; relation pg〜という名前のファイルが多数オープンできないという旨を
> ;;; 示すログが頻繁に出力されております。
> 
>   具体的なメッセージを教えてもらえますか?

これは下記に示すとおりです。

_mdfd_getrelnfd: cannot open relation pg_opclass_oid_index: 許可がありま
せん
_mdfd_getrelnfd: cannot open relation pg_proc: 許可がありません

pg_〜の部分が違うだけで同様のエラーが多数発生します。現在上記のエラーで
オープンできなかったファイル名の一覧は以下のとおりです。

pg_type_oid_index
pg_opclass
pg_proc_oid_index

>   syslog への OS のメッセージはどのようでしょうか?

障害発生前に/var/log/messagesにログをはいているプロセスはApacheの
プロセスとPostgreSQLのプロセスのみでした。それについては前のメールで
記したとおりです。

>   1 プロセスあたりで使用できるファイル数を 13052 とすることをどのようにして設
> 定したのでしょうか?

/proc/sys/fs/file-max

の中身を確認しました。自分で設定したわけではなく、デフォルトでこの値に
なっていました。

> ;;; 			ファイルディスクリプタは使い切ってないと
> ;;; 思われます。
> 
>   これは、まだ、そのように判定できないと思えます。

上記のように判断した根拠は

lsof | wc -l

で全てのプロセスがオープンしているファイル数を検索し、
それが1プロセスで扱えるファイル数(13052)を下回っていたので
ファイルディスクリプタは使い切っていないと判断しましたが
この判断根拠は間違いでしょうか。

障害発生直前もしくは直後のPostgreSQLがオープンしているファイル数は
確認していませんが、先ほどのlsof | wc -lにより全プロセスが
使っているファイル数は確認しました。障害発生直前は3300で
障害発生直後は2700でした。600近くファイル数が減少していますが、
PostgreSQLの子プロセスが全て死んだため、このように減少したと認識
しております。普段の運用時のPostgreSQLのオープンしているファイル数も
約600くらいです。(「lsof -c post | wc -l」で確認)

-- 
Noriyuki Takei <noriyuki.takei @ jalinfotec.co.jp>




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