web-dev-qa-db-ja.com

Postgres 9.5から9.6に10.6にアップグレードした後、CPU使用率が常に高い

RDSインスタンス(db.t2.medium)を数日前にPostgres 9.5から9.6にアップグレードしました。アップグレード以降、CPU使用率は常にほぼ100%でした。これにより、アプリケーションがダウンしました。問題がバージョン9.6にあると想定して、10.6にもう一度アップグレードしました。元の9.5バージョンのCPU使用率よりも改善されましたが、それでもかなり高くなっています。

アップグレード中にアプリケーションコードを変更していません。 CPU使用率が増加した理由を確認し、場合によっては修正するにはどうすればよいですか?

enter image description here

ANALYZE VERBOSE;

上記のコマンドを使用して、データベース全体に対して [〜#〜] analyze [〜#〜] クエリを実行する必要があります。

問題は、postgresが生成したクエリプランが以前のバージョンのpostgres用に最適化されていることです。RDSの更新を行うと、これらのプランは暗黙的に再生成されません。これは手動で行う必要があります(AWSが実行する理由は確かです。これを手動で行わないでください。しかし、なぜかはまったくわかりません)。

私の場合、あなたの場合と同様に、およそ1週間の非常に高いCPU使用率を確認しました。ANALYZEを実行した後、CPUは以前のベースラインに戻りました。下の画像からわかるように、アップグレード(私の場合は9.4-9.5)は11/27に実行され、分析クエリは12/02に実行されました。

(VERBOSEは厳密には必要ありませんが、コマンドの進行状況を監視できると便利です)

Postgres RDS CPU usage over the course of a week

5
tannart