为什么我的基本Heroku应用程序需要两秒钟才能加载?
我创build了两个非常简单的Heroku应用程序来testing这个服务,但是当我第一次访问它的时候,通常需要几秒钟来加载页面:
- Cropify – 基本Sinatra应用程序( 在github上 )
- Textile2HTML – 更基本的Sinatra应用程序( 在github上 )
我所做的只是创build一个简单的Sinatra应用程序并部署它。 我没有做任何捣乱或testingHeroku服务器。 我能做些什么来提高响应时间? 现在速度很慢,我不确定从哪里开始。 如果有帮助的话,项目的代码在github上。
- 如果您的应用程序暂时未使用,则将其从服务器内存中卸载。
- 在第一个命中它被加载并保持加载,直到一段时间没有任何人访问它。
这样做是为了节省服务器资源。 如果没有人使用你的应用程序为什么要保持资源的繁忙,而不是让真正需要的人使用它们?
如果你的应用程序有很多连续的stream量,它将永远不会被卸载。
有一个关于这个官方的说明 。
你可能也想调查一下你在Heroku w / Varnish和Memcached上的caching选项。 这些坚持独立的dynos。
例如,如果您拥有不变的主页,则可以通过将Cache-Control标头添加到响应中,将其caching在Varnish中。 那么你的用户将不会经历负载打击,直到他们想要“做某事”而不是当他们到达时。
我有同样的问题。 我昨晚部署了Rails 3(1.9.2)应用程序,速度很慢。 我知道1.9.2 / Rails 3在Heroku的testing版,但支持票据说,它应该罚款,使用一些指示,他们给我。
我知道很久以后的第一个要求是最长的。 说得通。 但是简单地加载甚至连接到数据库10秒的页面都是非常糟糕的。
无论如何,你可能想尝试我要做的事情。 这是configuration我的应用程序,看看需要多长时间在本地。 如果这需要400毫秒,那么有些事情是错的。 但是如果我在本地得到50ms,Heroku仍然需要10秒,那肯定是错的。
显然,caching有帮助,但你只能得到5MB的免费,再次,有一个人使用该网站,应该不会那么慢。
您应该查看Tom Robinson对“可扩展性:Heroku如何工作?”的回答。 在Quora上: http : //www.quora.com/Scalability/How-does-Heroku-work
Heroku将服务器资源划分为许多不同的客户/应用程序。 你的应用程序被分配了计算能力的块。 Heroku分区基于资源需求。 当你有一个stream行的应用程序需要更多的权力,你可以支付更多的“dynos”(应用程序容器),然后获得更大的饼馅饼作为回报。
就你而言,你正在运行一个免费的应用程序,很less有人(如果有的话)正在访问/使用。 因此,Heroku通过卸载应用程序来削减所获得的资源 – 实质上是将其置于hibernate状态 – 直到发出请求到您的地址为止。 当发生这种情况,并且您的应用程序长时间闲置时,重新加载需要时间。
如果重新加载时间很重要,请添加一个额外的dynamic码以防止您的应用程序入睡。