为什么Heroku的运行速度比localhost慢得多?

时间:2014-06-25 04:38:45

标签: ruby-on-rails performance heroku

我在Rails中创建了一个简单的股票筛选器(根据某些标准筛选出股票)。在我的本地主机上,股票立即更新,但在Heroku上,在更新股​​票清单之前可能需要10-15秒。

我的Heroku应用程序在这里:http://fruthscreener.herokuapp.com/ Github在这里:github dot com / anfruth / Fruth_Screener_Rails

更新查询所涉及的代码可以在user_stocks模型和def create下的股票控制器中找到。

为什么会发生这种情况的任何想法以及如何解决这个问题的建议?

谢谢。

2 个答案:

答案 0 :(得分:4)

对我来说并不慢

-

<强>的Heroku

唯一可以减慢Heroku速度的是你的数据库连接是“非现场”

由于数据库提供商在另一个国家/地区是不同的主机,我们之前的应用程序之前运行速度非常慢。

Heroku runs on AWS,意味着它将以超快的速度运行如果您拥有相同数据中心的所有依赖项。使用这些强大的“云”托管服务提供商之一的一个缺点是,他们需要保留所有 local 请求,以帮助他们的系统快速运行;因此,如果你的数据库是“非现场”的,它会大大减慢它的速度。

你必须记住,除非他们有数据库连接,否则Rails应用程序无法运行;因此,如果您的连接速度很慢,您的应用程序的性能将受到严重影响

-

<强>的Postgres

如果您的应用在Heroku上运行缓慢,最好的办法是确保您使用的是Heroku的postgres数据库。这部署在Heroku的AWS云上,这意味着它与您的应用程序位于同一网络上,因此可以尽快运行

您需要将应用的database连接更改为新的production服务器,如下所示:

#config/database.yml
production:
  .... #-> your Heroku db details here

这将允许您在将此新代码推送到Heroku后运行heroku run rake db:migrate - 这应该为您定义数据库结构,允许您根据需要填充它

答案 1 :(得分:1)

听起来你可以从使用New Relic或Heroku的其他性能管理软件包中获益,以便找出导致你出现问题的原因。 New Relic的免费等级应足以让您入门。

顺便说一句,如果您的应用程序是Heroku免费套餐应用程序(单个网络dyno),那么您的dyno将在不使用时进入睡眠状态,并且您可能会遇到dyno旋转成本,这通常是关于5-15秒。在几分钟内重复几次相同的查询,看看每个请求的缓慢是否持续,或者只是第一个请求。