web-dev-qa-db-ja.com

PostgresプロセスによるCPU使用率が高い

私はPostgresデータベースでアプリケーションを実行していますが、アプリケーションに取り組んでいるときに8〜10人程度になると、CPU使用率が99〜100%にまで急上昇します。アプリケーションは、Codeigniterフレームワークに基づいて構築されていましたデータベースへの接続を毎回クローズする必要がない場合、この問題の解決策は何でしょうか。私はどんな提案もいただければ幸いです。ありがとうございました

基本的に、アプリケーションで人々が行うのは挿入クエリの実行ですが、非常に高速で、1分間に70〜90の挿入クエリを実行できます。

6

私は同様の問題に出くわしました。その理由は、長い間、一部のトランザクションがスタックして実行されていたためです。したがって、CPU使用率は100%に増加しました。次のコマンドは、最も長時間実行されている接続を見つけるのに役立ちました。

SELECT max(now() - xact_start) FROM pg_stat_activity
                           WHERE state IN ('idle in transaction', 'active');

このコマンドは、接続が実行されてからの時間を示します。この時間は1時間を超えてはなりません。ですから、長い間実行されていた、またはどこかで動かなくなった接続を殺すことは、私にとってはうまくいきました。私は this 投稿に従って、私の問題を監視および解決しました。 Post には、この状況を監視するための便利なコマンドが多数含まれています。

14
Ajeet Khan

あなたはPostgreSQLが何をしているかを知る必要があります。関連リソース:

遅いクエリまたは最も一般的なクエリが使用されているものを見つけたら、 se EXPLAIN を使用して、それらが効率的に実行されていることを確認します。

5
Samuli Pahaoja