【问题标题】:Heroku, Cedar stack: What requests take up dyno timeHeroku,Cedar 堆栈:什么请求占用了测功时间
【发布时间】:2012-01-01 21:59:55
【问题描述】:

我已经考虑过如何计算我可以使用 Heroku 和一个 dyno 处理多少用户。 但要弄清楚,我需要一些输入。

而且我必须说官方文档不太好导航和解释,所以我还没有全部阅读。我对它的抱怨是它不能很好地描述事物。有时它描述旧堆栈,有时它是特定于 ruby​​ 的,有时它根本没有描述等等。

所以我需要一些关于 Heroku、Cedar 堆栈如何根据请求进行计算的输入。

非常欢迎您纠正我的假设,因为我对测功机理论相对较新。

假设我有一个控制器,它接受一个请求并在 10 毫秒内在本地计算 JSON 响应,我是否能够每秒处理 100 个请求?

据我了解,雪松堆栈没有前端缓存解决方案,因此会出现许多问题。

  1. 静态内容请求会占用测功时间吗?
  2. 传输时间是否计入请求时间。
  3. 如果请求需要较小的 CPU 使用率,一个测功机解决方案是否可以同时向请求传输多个响应。

有些问题是相互交织的,所以综合答案或其他想法是有价值的。

一个例子:

静态 HTML 页面。

<HTML>...<img><css><script>...
AjaxCall //dyno processing time 10ms
AjaxCall //dyno processing time 10ms
AjaxCall //dyno processing time 10ms
AjaxCall //dyno processing time 10ms
...</HTML>

我可以每秒提供 (1000ms / (10ms x 4)) = 25HTML 页面吗?

  • 这假设静态内容不是由测功机提供的。
  • 这是假设传输时间不归咎于测功机。

如果不是这样,我将是一个灾难。假设非洲的手机发出 10 次请求并有 10 秒的传输时间,那么我的应用程序将在 1.5 分钟内不可用。

【问题讨论】:

  • 在 CDN 上边缘缓存静态资产始终是最佳实践。

标签: java caching heroku cloud cloud-hosting


【解决方案1】:

我只能真正回答第一个问题:静态资产肯定会占用测功时间。事实上,我认为在使用 heroku 的免费包时,最好将 所有 静态资产(包括样式表和 JS)保存在资产服务器上。 (如果每个人都这样做,heroku 会受益,你也会受益)。我建议使用asset_sync gem 来处理它。自述文件确实解释了存在一两个容易解决的当前问题。

关于您的最后一点,抱歉,如果我在这里误解了,但南非的用户可能需要 10 秒才能将他们的请求路由到 Heroku,但大部分时间可能都花在了在迷宫般的电话交换上南非和美国。您的测功机仅与发生在 Heroku 服务器内的请求部分相关联,而不是您的请求到达那里所花费的 9.9 秒。因此,Heroku 有效地忽略了您的请求是来自南非还是瑞典。

你可以做各种各样的事情来加速你的应用程序:缓存、更多的 dynos、独角兽和几个工人

【讨论】:

  • 感谢您的见解。您并没有误解,实际上您是正确的,因为我担心 Heroku 在美国以外的响应时间非常慢会占用测功时间。我将使用 Play 框架学习 Scala,因此您对asset_sync 的推荐可能不适合我,因为它仅适用于 Ruby? OT:你必须部署到两台服务器,这是一个很大的缺点,这消除了只有一个 repo 的简单性,包含所有内容,然后键入 git push。
【解决方案2】:

你做了两个错误的假设。好消息是,一旦您以不同的方式思考问题,您的问题就会变得简单得多。

首先请记住,测功机是单个进程,而不是单个线程。如果您使用的是 Java,那么您将使用许多请求线程。因此,您不必担心在处理请求时您的应用程序不可用。您将能够并行处理请求。

在谈论测功时间时,它指的是您的进程运行的时间量,而不仅仅是请求处理时间。因此,等待请求的 Web 进程仍然会消耗 dyno 时间,因为该进程在等待请求时已启动。这就是您每月获得 750 个免费测功小时的原因。您将能够在整个月(720 小时)内运行一个测功机。

就计算您的应用程序每秒可以处理多少个请求而言,最好的方法是对其进行测试。您可以在使用 JMeter 或任何您喜欢的负载测试程序进行负载测试时使用 New Relic 来监控您的应用程序:http://devcenter.heroku.com/articles/newrelic

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 2011-12-08
    • 2016-01-29
    • 2012-07-10
    • 1970-01-01
    • 2011-11-22
    • 2011-12-17
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多