为什么我的基本Heroku应用程序需要两秒钟才能加载?

Lan*_*ard 97 ruby performance heroku

我创建了两个非常简单的Heroku应用程序来测试服务,但是当我第一次访问它时,通常需要几秒钟来加载页面:

我所做的就是创建一个简单的Sinatra应用程序并进行部署.我没有做任何事情来捣乱或测试Heroku服务器.我该怎么做才能缩短响应时间?它现在非常慢,我不知道从哪里开始.如果有帮助,项目的代码在github上.

cly*_*yfe 161

  • 如果您的应用程序暂时未使用,则会从服务器内存中卸载.
  • 在第一次点击它被加载并保持加载,直到一段时间过去没有任何人访问它.

这样做是为了节省服务器资源.如果没有人使用您的应用程序,为什么要保持资源忙碌而不让真正需要使用它们的人?
如果您的应用程序有大量连续流量,则永远不会卸载.

有关于此的官方说明.

  • Ping服务器以防止它闲置是在你自己的巢中.您正在谈论的这些服务是_free_.他们需要节约资源.如果每个人都ping他们的服务器,没有人会被换掉,提供商必须扩大规模.这需要花钱....再见免费服务.我认为这个答案的海报应该删除ping服务器的建议. (61认同)
  • 解决这个问题的最简单方法是将你的动力学增加到2. (49认同)
  • 我使用uptimerobot.com每5分钟免费ping我的Heroku应用程序 - 它告诉我我有200OK(更重要的是当我没有)并且它保持应用程序响应.我不为此道歉; 我有10个heroku应用程序,其中大多数是开发或演示应用程序,但这一个特别是实时/制作,尽管流量低,但它需要在请求时快速响应.如果这对Heroku的商业模式构成威胁,那么他们就会阻止我们这样做.当我有成千上万的全球用户时,我会启动另一个dyno并开始为这项优质服务付费.所以退出内疚旅行的事情!:) (29认同)
  • @diegopau我发现了一个很棒的应用程序(http://wekkars.com/),可以满足您的需求.目前它似乎处于测试阶段,但它在这里运作完美. (5认同)
  • 现在回想起来,确实达到了破窝的目的。幸运的是 Heroku 处理得很好。由于免费层现在受到正常运行时间的限制,因此您不能再永久使用免费的dyno。 (4认同)
  • 我和Tokn在一起.如果网站加载速度太快,新用户应该如何获得用户? (3认同)
  • 这样做可以使服务器在其他应用程序需要时可以有一些空闲内存.其次,如果服务器始终在运行,则很容易使应用程序超载.有很多原因.Clyfe指出它的简单版本. (2认同)

sev*_*een 14

您可能还想调查Heroku w/Varnish和Memcached上的缓存选项.这些是独立于动态的持久性.

例如,如果您有一个不变的主页,则可以通过向响应添加Cache-Control标头,在Varnish中长时间缓存该主页.然后,您的用户在他们想要"做某事"而不是他们到达之前不会遇到负载.


RKe*_*ley 5

您应该查看 Tom Robinson 对“可扩展性:Heroku 是如何工作的?”的回答。在 Quora:http : //www.quora.com/Scalability/How-does-Heroku-work

Heroku 在许多不同的客户/应用程序之间划分服务器资源。您的应用程序被分配了计算能力块。Heroku 分区基于资源需求。当您有一个需要更多功能的流行应用程序时,您可以为更多的“dynos”(应用程序容器)付费,然后作为回报获得更大的一块蛋糕。

但是,在您的情况下,您正在运行一个免费应用程序,很少有人 - 如果您以外的人 - 正在访问/使用。因此,Heroku 通过卸载您的应用程序来减少您获得的资源——本质上是将它置于休眠状态——直到有一个请求发送到您的地址。如果发生这种情况,并且您的应用程序已闲置很长时间,则重新加载需要时间。

如果重新加载时间很重要,请添加 1 个额外的 dyno 以防止您的应用进入睡眠状态。