人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PostgreSQLで質問です。

あるサーバでアクセス混雑時に、1レコードのinsert処理に5?6秒かかることがあります。

これはinsertそのものが遅いのか、あるは何か別で重い処理があってそれで待たされて遅くなっているのか、どうすればわかるでしょうか?

insert処理を高速化したいのですが、何から手をつければいいかわからなくて困っています。


■詳細情報

・サーバ CentOS 5.3, PostgreSQL 8.4.4
・当該サーバはPostgreSQL専用。他のミドルウェアは動かしていない。

・INSERT文の例:

INSERT INTO applog (user_id, action, time) values (123, 'login', 'now()');
INSERT INTO cart (user_id, product_id, time) values (123, 456, 'now()');
など

・この時間帯は、どのテーブルでもINSERTが遅くなるようです。
・vacuumは毎日早朝に行っています。 (insertが遅いのは夜なので、vacuum実行時とは別の時間帯です)


●質問者: DQNEO
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Melodybox
●50ポイント

時間帯によりアクセスが極端に遅くなるという事で、同時接続数が上限に達している可能性はありませんでしょうか?
アクセスが遅くなる時間帯に SELECT count(*) FROM pg_stat_activity; で接続数を調べてみて下さい。
結果がpostgresql.conf内の「max_connections」と同数付近である場合、上限に達している可能性が高いです。
max_connectionsを増やす事で重くなる現象が回避できると思います。
同時接続数を増やした場合、「shared_buffers」の値も増やす事をお勧めします。


DQNEOさんのコメント
ありがとうございます!同時接続数を見てみます。

2 ● TransFreeBSD
●50ポイント

主にググった結果です。PostgreSQLと、統計情報、監視、プロファイリング等のキーワードでググると色々あります。
正常時と異常時での違いを見つける事になると思います。


DQNEOさんのコメント
ありがとうございます。 ps, topなどは見ています。iowaitが少し多い感じです。 統計情報をとれるように設定したので、結果が出るのを待っています。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ