[pgsql-jp: 38569] vacuumdbコマンドのfullオプションをつけた時のトラブルについて

Daisuke Arai d-arai @ tni.co.jp
2007年 7月 11日 (水) 11:06:34 JST


メーリングリストの皆様、こんにちわ。
皆様からあたたかい御回答を賜り、厚くお礼申し上げます。

vacuumdbコマンドにfullオプションをつけた時にトラブルが発生したため、
原因をさがしているのですが、なかなか解決できない状況です。
以下に簡単な状況を記しますので、同様な現象をお目にかかった方や
解決法をお持ちの方、どうぞご教授いただけませんでしょうか。
PostgreSQLのバージョンは「7.3.4」、OSはRedHat Linux 9の環境です。

crontabでvacuumdbコマンドを実行するようにしておりまして、fullオプション(-f)
を付加して実行したところ、以下のようなログが頻繁に残るようになっておりまし
た。

FATAL:  Sorry, too many clients already

そこで、OS上でプロセスの状況を確認したところ、(分かる範囲ですが)

postgres: postgres [dbname] [接続元IPaddress] ・・・・・ waiting

というようなプロセスが累積しておりました。
クライアント側からはDatabaseに接続が出来ないような状況でしたので、この累積
しているプロセスの中で一番最初に出現しているプロセスを強制終了しました。
すると、ログには以下のように残りました。

WARNING:  Message from PostgreSQL backend:
 The Postmaster has informed me that some other backend
 died abnormally and possibly corrupted shared memory.
 I have rolled back the current transaction and am
 going to terminate your database system connection and exit.
 Please reconnect to the database system and repeat your query.

また、vacuumdbが自然に終了してしまいました。

そこでお伺いしたいのは、vacuumdbを実行しているときにバキュームを行っている
対象のテーブルに対して閲覧や更新などを行うことができないという事象は
PostgreSQL7.1で挙げられておりましたが、PostgreSQL7.2以降ではこのような
(テーブルに対してロックがかかったような)事象が起きないものだと確認しており
ました。しかしながら、PostgreSQL7.3.4を使用しているのになぜこのような事象と
なってしまったのでしょうか。

大変申し訳ありませんが、どうぞ宜しくお願い申し上げます。

追伸 過日お伺いしました「shared_buffers」については、現在調整の上検討して
   いるところです。御回答いただきました方々には、大変ご迷惑をお掛けしま
   したことを深くお詫びいたします。

荒井 大輔  E-mail [ d-arai @ tni.co.jp ]




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