在Heroku上托管静态网站需要多少个“dynos”?

18

我想在Heroku上托管一个静态网站,但不确定要从多少个dynos开始。

在这个页面上说:https://devcenter.heroku.com/articles/dyno-requests dynos可以处理的请求数取决于使用的语言和框架。但我也在其他地方读到过,1个dyno一次只能处理一个请求。

我有点困惑,在很小的流量(<1000次/月,<10次/小时)下,应该只需要1个web dyno来托管一个静态网站吗?那么当流量开始增加时,如何估计需要使用额外的dynos呢?

希望我的问题表达得清楚。非常感谢您的建议!


4
为什么要使用Heroku托管静态网站?使用Amazon S3或共享主机等方案似乎更能物有所值。 - Brendan Long
@brendan-long,你能解释一下如何/为什么吗?或者给我提供一些可以学习更多的资源链接吗? - Gbert90
Heroku是为动态网站设计的,价格也相应地定制。每个dyno大约需要35美元/月,基本上是一个线程可以做任何你想要的事情。以同样的价格,Amazon S3将为您传输300 GB的文件(很可能存储价格对您来说是微不足道的),并且它将按您想要的速度进行操作(不限于一个线程)。基本上,它将更好地扩展,并且价格更便宜。 - Brendan Long
3个回答

50

我有一个完全有效的答案被删除了,有些不高兴,但这是另一次尝试。

Heroku dynos是单线程的,所以它们只能处理一个请求。如果您有一个动态页面(如php、ruby等),那么您需要查看页面在服务器上响应的时间,例如需要250毫秒来响应,则单个dyno可以处理4个请求每秒。添加更多的dynos将增加并发性,而不是性能。因此,在这种情况下,如果您有2个dynos,则可以处理每秒8个请求。

由于您只讨论静态页面,它们的响应时间应该比这快得多。最好的方法是查看您的heroku日志输出,并查看是否有持续的“队列”值;这意味着dynos无法跟上并且请求正在排队等待处理。


谢谢你的尝试 #2!这是一个写得很好的答案! - Gbert90
非常感谢您提供如此出色、写得很好的答案!您有一种天赋,可以用简单易懂的方式解释复杂的事情! - Jeremy Iglehart
非常好的解释,我花了很多时间尝试理解 dynos 的工作原理。谢谢 - levi
呵呵,一样;非常感谢!Heroku解释了很多东西,但即使阅读了很多,你也不会真正理解你在这里清楚地解释的内容。 - Ben
你的答案为什么被删除了? - Ben

3

由于大多数HTTP 1.1客户端在请求资源时会创建两个TCP连接到Web服务器,因此我有一个预感,如果您启动两个dynos,则单个客户端的流水线资源请求可以得到处理,从而可以获得更好的性能。

您需要决定是否值得为单个客户端的(潜在的轻微)改进性能而支付额外的费用。

如果您预计会有多个客户端同时请求信息,那么您可能需要超过两个dynos,以确保至少有一个可供其他客户端使用。


3
在这种情况下,如果您只使用一个dyno。第一个是免费的,第二个将使您超过月最低消费额,并开始触发成本。
但是,您还应该意识到在Heroku上只有一个dyno时,如果最近没有访问该应用程序(我认为大约是30分钟),它将进入休眠状态。在这种情况下,再次唤醒可能需要5-10秒钟,并且可能会给您的用户带来非常缓慢的初始体验。
有一些网络服务可以对您的站点进行ping测试以保持其唤醒状态。例如,http://www.wekkars.com/

这确实是单个dynos的一个重要问题。我通过在Heroku中使用new-relic(https://addons.heroku.com/newrelic)插件来解决它,该插件(在免费版本中)提供了pinging功能以及使用统计信息,以检查您的队列是否过高并且需要更多的dynos。 - syonip
我现在使用 Runscope 进行此操作。我一直在使用它来测试外部服务器的响应时间和结果。非常有效,可以保持应用程序的正常运行。 - Mark Swardstrom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接