« お、新しい「いのち」がうまれておる | メイン | Webサーバーの負荷分散とDNSラウンドロビンの話 »

[postgresql]ロードアベレージは落ち着いた感じ(2008/08/07)

UIEngine だ: [postgresql] ロードアベレージが高すぎると感じたらどうするか?

以前書いたエントリーでロードアベレージが3桁に突入しそうな話があった。結局落ち着いている。原因は何のことはないインデックスの設計ミス。数百万件のテーブルをシーケンシャルアクセスしているって、おいおい、といった感じ。アクセス数が多く、DB資源が枯渇している場合には、インデックス設計を疑うという定石通りの結果。

 postgresql自体のパラメーターチューニングでは限界がある。shared_buffersを変更したら後は劇的な速度向上が見込めるものが少ないといったところ。↓の資料も参考になる。

OSDL DBT-1によるPostgreSQLの設定ファイルのチューニングに関する考察
http://ossipedia.ipa.go.jp/capacity/EV0603300126/

実際にはCPU IDLEが0%になって、postgresqlのVACUUMのタイミングやチェックポイントのタイミングを調整しても意味がない状態になっていた。CPUを使い切っていたら、VACUUMやチェックポイントのタイミングを調整しても劇的な改善は望めない。

 DBへのアクセス数(クエリ数)が多くなれば多くなるほど、

VACUUMとかチェックポイントの処理<<<<<<変なSQLの実行処理

となるわけだし。

 新しいサーバーの調達と同時に、SQLの徹底した調査が必要。今回は、多くが0.Xmsec台の処理の中に1000msec以上かかるSQLがあったため簡単に見つけられた。

postgresql.conf
にて
log_min_duration_statement = 0
を設定

でSQLログの出力可能。

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e553eec5c48834

[postgresql]ロードアベレージは落ち着いた感じを参照しているブログ:

コメント

この記事へのコメントは終了しました。