在 Heroku 上托管一个静态网站需要多少台测功机?

Posted

技术标签:

【中文标题】在 Heroku 上托管一个静态网站需要多少台测功机?【英文标题】:How many dynos would require to host a static website on Heroku? 【发布时间】:2012-05-20 12:58:40 【问题描述】:

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

它在这个页面上说:https://devcenter.heroku.com/articles/dyno-requests dyno 可以服务的请求数量取决于所使用的语言和框架。但我也在某处读到 1 dyno 一次只能处理一个请求。

这里有点困惑,1 个网络测功机是否足以托管一个流量非常小的静态网站(

希望我的问题措辞正确。非常感谢您的意见,在此先感谢!

【问题讨论】:

为什么要使用 Heroku 托管静态站点?使用 Amazon S3 或共享主机之类的东西,您似乎会物有所值。 @brendan-long,你能解释一下如何/为什么?或者链接到一些我可以了解更多信息的来源? Heroku 专为动态网站而设计,并据此定价。每个测功机每月约 35 美元,基本上是一个线程做任何你想做的事情。以同样的价格,Amazon S3 将为您传输 300 GB 的文件(很可能存储价格对您来说可以忽略不计),它会尽可能快地完成(不限于一个线程)。基本上它会扩展得更好,而且也更便宜。 【参考方案1】:

有点恼火,因为我删除了一个完全有效的答案,但这是另一个尝试。

Heroku dyno 是单线程的,因此它们能够一次处理一个请求。如果您有一个动态页面(php、ruby 等),那么您将查看页面在服务器上响应所需的时间,假设响应时间为 250 毫秒,那么单个测功机每秒可以处理 4 个请求。添加更多 dyno 会提高并发 NOT 性能。因此,如果您有 2 个测功机,在这种情况下,您每秒可以处理 8 个请求。

由于您只是在谈论静态页面,因此它们的响应时间应该比这快得多。确定是否需要更多信息的最佳方法是查看 heroku 日志输出,看看是否有持续的“队列”值水平;这意味着测功机无法跟上,请求正在排队等待处理。

【讨论】:

感谢您的尝试 #2!这是一个写得很好的答案! 感谢您提供如此出色且写得很好的答案!你有一种用简单易懂的方式解释复杂事物的天赋! 解释得很好,我花了很多时间试图了解测功机的工作原理。谢谢 呵呵一样;多谢! Heroku 解释了很多东西,但即使阅读了很多,你也不会真正理解你在这里清楚解释的内容 为什么你的答案被删除了?【参考方案2】:

由于大多数HTTP 1.1 clients will create two TCP connections 在请求资源时向网络服务器发送资源,我有一种预感,如果您启动两个 dyno,您会在单个客户端上看到更好的性能,因此客户端的流水线资源请求也可以通过流水线方式处理。

您必须决定是否值得为单个客户的(可能轻微的)性能改进而额外花钱。

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

【讨论】:

【参考方案3】:

在这种情况下,如果您使用一个测功机。第一个是免费的,第二个会让您超过每月最低限额并开始产生费用。

但是,您还应该意识到,在 Heroku 上使用一个测功机,如果最近没有访问该应用程序,该应用程序将进入睡眠状态(我认为这大约是 30 分钟)。在这种情况下,再次唤醒可能需要 5-10 秒,并且会给您的用户带来非常缓慢的初始体验。

有一些网络服务会 ping 您的网站,测试它的响应并保持它处于唤醒状态。以http://www.wekkars.com/ 为例。

【讨论】:

这确实是单个测功机的一个重要问题。我设法通过 heroku 中的 new-relic (addons.heroku.com/newrelic) 插件解决了这个问题,它(在免费版本中)为您提供了 ping 功能和使用统计信息,以检查您的队列是否变得太高并且您需要更多的测功机。 我现在为此使用 runscope。我一直在使用它从外部服务器 ping 和测试结果。非常适合让应用保持活力。

以上是关于在 Heroku 上托管一个静态网站需要多少台测功机?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Heroku 上托管网站吗?如果没有,啥是类似 PaaS 的解决方案?

如何在Heroku上托管带有Node后端的React应用程序?

在 Heroku 上托管时,Selenium 应用程序重定向到 Cloudflare 页面

在 Azure Blob 存储上托管多个静态网站

如何在 Google App Engine 上托管静态 HTML 文件?

我需要为 Heroku 上托管的机器人实现分片吗?