RDS postgres 从 9.4 升级到 9.5,CPU 卡在 100% 几个小时

Posted

技术标签:

【中文标题】RDS postgres 从 9.4 升级到 9.5,CPU 卡在 100% 几个小时【英文标题】:Upgraded RDS postgres from 9.4 to 9.5, CPU has been stuck at 100% for hours 【发布时间】:2017-10-11 16:12:55 【问题描述】:

在将我的 RDS postgres 从 9.4 升级到 9.5 后,我看到 CPU 保持在 100% 左右超过 8 小时。

在我手动取消它们之前,我看到过去需要

我不是在处理大型数据库。大多数被查询的表都是

与正常情况相比,我的读取 IOPS 和写入 IOPS 非常低(主要是因为站点已关闭并且我关闭了非关键服务。

我一直在关注 pg_stat_activity 的活动查询,没有发现任何异常(除了过去需要

我确实从 9.5 升级到 9.6 只是为了它,它没有帮助。

对调试有什么建议吗?我被难住了,很多网站都关闭了。

【问题讨论】:

您是否尝试过重启实例? 是的,多次。 【参考方案1】:
ANALYZE VERBOSE;

我遇到了一个非常相似的问题,直到 postgres 的版本被移出和移出,并且能够通过运行 ANALYZE 来解决它。

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

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

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

【讨论】:

【参考方案2】:

调试 RDS 很困难,因为您无法检查主机操作系统。如果可能,您可以拍摄每个数据库的快照,然后从 9.5 和 9.6 版本的快照创建 2 个全新的 RDS 实例。这将帮助您了解是否存在以下问题:

    升级过程(如果新实例有效) 您的应用程序在 9.6 上运行(如果 9.6 上的 cpu 很高,但 9.5 实例工作) 别的东西。

【讨论】:

以上是关于RDS postgres 从 9.4 升级到 9.5,CPU 卡在 100% 几个小时的主要内容,如果未能解决你的问题,请参考以下文章

使用 postgres 9.4 将 JSON 元素附加到数组

在较旧的 Postgres (9.4) 上使用 Django 3+

在 Postgres 9.4 中查找 JSON 数组中的最后一项

如何安装/更新到 Postgres 9.4?

如何从 Postgres 9.4 中转储大对象数据,然后将其导入 Postgres8.x?

如何从 aws rds 导出 postgres 数据库