【问题标题】:How can I speed up my AWS RDS Postgres performance?如何加快我的 AWS RDS Postgres 性能?
【发布时间】:2015-11-24 08:30:22
【问题描述】:

我刚刚在亚马逊的 AWS 上设置了一个 db.t2.micro 实例。我正在使用 sinatra 加载本地主机网页。我正在使用 Active Record 进行大约 30~ 次查询,加载需要 92 秒。它非常慢。我尝试执行此处列出的自定义参数:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html#CHAP_BestPractices.PostgreSQL

这无助于加快速度。我不确定如何加快此实例的速度。这是我第一次托管数据库。任何帮助,将不胜感激。

当我运行我的 sinatra 应用程序时,它在本地(本地主机)托管。这是 30~ 查询需要 92 秒才能加载的地方。当我在 Postgres 中运行 select * 语句时,它们只需要几秒钟。

【问题讨论】:

  • 您能否澄清一下您所说的“它只是通过localhost运行很慢。当我在Postgres中进行查询时它非常快。”?你是说数据库太慢,还是“非常快”?另外,请注意t2.micro 实例具有可突增的 CPU——如果 CPU 使用过多,它会变慢。你看过CloudWatch metrics 看CPU/RAM/Disk 是否受限?
  • 进行一些日志记录以查看减速是由数据库还是应用程序引起的会很有用。查看发送到 PostgreSQL 的 SQL 查询日志以查看哪些可能运行“慢”也很有用:docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…

标签: ruby performance postgresql amazon-web-services sinatra


【解决方案1】:

问题在于您与亚马逊数据中心之间的延迟。

例如,当您在纽约并且您的 RDS 实例在亚马逊位于西海岸的数据中心时,您与数据中心之间的延迟大约为 80-100 毫秒。这意味着当您的本地应用程序向数据库发送查询时,数据库接收查询之前大约需要 100 毫秒。要返回答案,又需要 100 毫秒。

也就是说:假设往返需要 300 毫秒,并且您有大约 30 个查询,那么您的应用程序会损失大约 10 秒的时间,什么也不做——只是等待通过网络发送数据。还有其他因素可能会进一步减慢这一速度:大数据包或丢失数据包(服务器必须再次询问)、糟糕的互联网连接、无线连接、您与数据库之间的距离比我的示例长。

因此,数据库应尽可能靠近同一数据中心中的应用程序服务器,以尽量减少延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2019-06-04
    • 2023-01-09
    • 2017-10-01
    • 2019-02-12
    相关资源
    最近更新 更多