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