プロが教える店舗&オフィスのセキュリティ対策術

postgresqlバージョン9.0を利用しています。しばらく安定していたのですが、運用から1ヶ月ぐらいしたここ最近、メモリの使用率(バッファ含め)が80%を超えるようになりました。
プロセスを確認すると、autoバキュームが負担になっているようです。
ほぼ autovacuum launcher processというプロセスが物理メモリの80%を占有しています。

このままでは、autovacuumにより逆にパフォーマンスが悪くなりそうです。
そこで、autovacuumが負担にならないようにvacuum_cost_limitの適切な値を設定しようと思索していますが、適切な設定に迷っています。
また vacuum_cost_limitはコメントアウトのままです。

どなたか適切な設定値の算出や設定や方法をご教授いただけませんでしょうか。


現在の状態はこちらです。

OS:RedhatLinuxEnterprise5.5 64bit
メモリ:8GB

postgres.confの設定

autovacuum = on
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_vacuum_cost_delay = 20ms
autovacuum_vacuum_cost_limit = -1


#vacuum_cost_limit = 200 # 1-10000 credits

どうぞよろしくお願いいたします。

A 回答 (1件)

設定の問題ではなく、PostgreSQL本体にメモリリークのバグが原因と思われます。

徐々にメモリ消費が増えていってしまいます。

9.0.2で修正されているので、アップデートしてみてください。
- Fix long-term memory leak in autovacuum launcher (Alvaro Herrera)

バージョンアップしないで対処となると、PostgreSQLサービスを定期的に停止/再起動するくらいしか手がありません。

参考URL:http://www.postgresql.org/docs/9.0/static/releas …
    • good
    • 0
この回答へのお礼

ありがとうございます。丁寧にご回答頂いていたにもかかわらず、お礼のお返事が遅くなりまして誠に申し訳ございません。

バージョン9.0.1メモリリークのバグが存在するのですね。
知りませんでした。
バージョンアップの手順がすべて英語なので頑張って解読していきます。
本当にありがとうございました。

お礼日時:2011/01/18 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す