从 Postgres 9.5 升级到 9.6 再到 10.6 后 CPU 使用率一直很高

Len*_*ran 10 postgresql amazon-rds cpu

几天前,我将 RDS 实例 (db.t2.medium) 从 Postgres 9.5 升级到 9.6。升级后,CPU 使用率一直几乎是 100%。这导致我的申请失败。假设问题出在9.6版本上,我又升级到10.6。它变得更好,但仍然比原始 9.5 版本的 CPU 使用率高得多。

我在升级过程中没有更改应用程序代码。如何检查 CPU 使用率增加的原因并可能修复它?

在此处输入图片说明

tan*_*art 20

ANALYZE VERBOSE;
Run Code Online (Sandbox Code Playgroud)

您需要使用上述命令对整个数据库运行ANALYZE查询。

问题是 postgres 生成的查询计划针对以前版本的 postgres 进行了优化,当您执行 RDS 更新时,它不会隐式地重新生成这些计划,这需要手动完成(我确定 AWS 不这样做是有原因的)不要手动执行此操作,但我真的不知道为什么)。

就我而言,我看到大约一周的 CPU 使用率极高,就像你的情况一样,然后在运行 ANALYZE 后,我的 CPU 回落到以前的基线。正如您在下图中看到的,升级(在我的例子中是 9.4 - 9.5)是在 11/27 运行的,分析查询是在 12/02 运行的。

(VERBOSE 不是绝对必要的,但能够观察命令的进度很有用)

Postgres RDS CPU 在一周内的使用情况

  • '上帝保佑你' 这拯救了我们数百万! (4认同)
  • 我感激你。 (3认同)
  • 我希望我能不止一次投票。 (2认同)