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 数组中的最后一项