【问题标题】:High CPU Utilisation on AWS RDS - PostgresAWS RDS 上的高 CPU 利用率 - Postgres
【发布时间】:2018-06-23 16:19:56
【问题描述】:

尝试将我的生产环境从 Native Postgres 环境(托管在 AWS EC2 上)迁移到 RDS Postgres (9.4.4),但失败了。与原生 Postgres 实例相比,RDS Postgres 实例的 CPU 利用率急剧上升。

我的环境详情在这里

  1. 主:db.m3.2xlarge 实例
  2. Slave1:db.m3.2xlarge 实例
  3. Slave2:db.m3.2xlarge 实例
  4. Slave3:db.m3.xlarge 实例
  5. Slave4:db.m3.xlarge 实例

[注意:所有从属服务器都处于 1 级复制]

我已将 Master 配置为仅接收写入请求,并且此实例一切正常。写入计数为每秒 50 到 80 次,CPU 利用率约为 20% 到 30%

但是除了这个实例之外,我所有的奴隶都表现得很糟糕。从站被配置为仅接收读取请求,我假设发生的所有写入都是由于复制。

这些机器上的预置 IOPS 为 1000 平均每个从站有 5 到 7 个读取请求,CPU 利用率为 60%。 与 Native Postgres 一样,我们的流量保持在 30% 左右。

无法确定 RDS 设置出了什么问题,并且 AWS 支持无法提供良好的潜在客户。

有人在使用 RDS Postgres 时遇到过类似的事情吗?

【问题讨论】:

    标签: postgresql amazon-web-services amazon-ec2 cpu-usage rds


    【解决方案1】:

    有很多因素可以最大限度地提高 PostgreSQL 上的 CPU 利用率,例如:

    • 可用磁盘空间
    • CPU 使用率
    • I/O 使用等

    几天前我遇到了同样的问题。对我来说,原因是一些交易长期以来一直卡住并运行。因此,CPU 利用率提高了。我通过运行一些 postgreSql 监控命令了解到这一点:

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

    此命令显示事务运行的时间。此时间不应超过一小时。因此,终止长时间运行或在任何时候卡住的事务对我有用。我关注this 的帖子来监控和解决我的问题。 Post 包含许多有用的命令来监控这种情况。

    【讨论】:

      【解决方案2】:

      我建议增加您的 work_mem 值,因为它可能太低,并进行正常的查询优化研究,看看您是否使用了没有适当索引的查询。

      【讨论】:

      • Matt,我在本机 postgres 上的设置运行得非常好。它与导入到 RDS Postgres 的相同转储(包括所有索引)。我试图弄清楚为什么 RDS Postgres 的行为如此不同。
      猜你喜欢
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多