0

我正在 Heroku 上运行一个 Rails 网站,并且正在进行一些性能分析和改进。

我想知道是否有任何有经验在 Heroku 上分析 Postgres 性能的人可以告诉我我是否在做一些明显错误的事情,或者这个数据库调用是否真的可以这么慢。

这是一个名为 Cities 的表上的 SELECT,该表有大约 3000 行。country_id 上有一个索引。

这是一张显示慢速调用分析的图像

如果您可以阅读图像,您会看到我正在调用 SELECT name, slug,... FROM "Cities" WHERE "cities"."country_id" = 151。

根据 Miniprofiler,这个调用(在 Heroku 上的生产中)花费了 14.739 秒。这个电话似乎需要 2 秒到 25 秒,这与该国拥有的城市数量(2 到 50 左右)之间存在一定的相关性。在开发中,它只需要几分之一秒。

我正在以 10 美元的计划运行 Heroku 托管的 Postgres。

现在我正在考虑通过 ajax 加载这个调用在我的页面上使用的内容,但对我来说它应该花这么长时间仍然没有意义。

有人有想法么?

作为参考,可以在 www.istorical.com 上找到该站点,此调用发生在加载 www.istorical.com/countries/russia 时

如果您确实访问了实际站点,您可能会发现加载时间并不长,这是因为此调用仅在页面的缓存过期时进行。

编辑:这是查询的 EXPLAIN (analyze,verbose,buffers)

4

1 回答 1

1

运行一些更多的解释分析测试,但如果它们都像那样出现,那么它不是数据库。该查询只需要 20 毫秒。

如果其他查询看起来没问题,那么数据库连接就不是一般情况了。

该页面上是否有任何内容与远程服务器通信 - 获取数据/图像等?

于 2013-08-24T06:26:02.690 回答