我们正在使用 Heroku。这很棒。我喜欢它。我们每个月在实例和数据库之间花费数千美元,而且通常不会更开心。但是,我们正在确定一个新项目的范围,该项目要求我们达到相当激进的延迟目标——低于 100 毫秒。
目前,我们是一个 Rails 3 应用程序,可以在 100 毫秒以下的时间内处理 80-90% 的请求,以 new-relic 衡量。鉴于我们必须从客户端的角度达到延迟目标,我将再捏造 10% 的成功率(因此下降到大约 3/4 的请求)。
是的,Heroku 上偶尔会出现可能导致延迟的网络故障,但至少在短期内,我们可以将我们的成功与 Heroku 的成功联系起来。
如果我们想为 95% 的请求达到 100 毫秒的延迟目标,我会看到 3 个选项:
a 显然是主要候选者,但我已经摘下了唾手可得的果实。 c 可能是最有可能成功的,但也是最多的工作(今天的大多数工程师都来自 Java,所以我们没有任何 Ruby->Java 惩罚)。但 b 是一匹黑马,它可能好也可能更糟——我不知道如何在不尝试和负载测试的情况下判断,但是,这基本上只是做它看看它是否是成功的。
我试图在它们之间做出决定,或者找到一种在它们之间做出决定的方法。有什么建议吗?经验?
*我们的大多数请求不需要我们呈现 html。
最佳答案
Rewriting generally doesn't give you the return you're expecting.
就个人而言,我会考虑优化您现有的应用程序。如果架构正确,100ms 是很容易获得的,另一个主机不会真正为您提供 Heroku 不会提供的任何速度方面的东西,而且不会增加麻烦。
我们在 Heroku 上运行了许多 Rails 应用程序,其中一些始终返回不到 50 毫秒的响应时间。
关于ruby-on-rails - 离开 Heroku 后我会看到速度变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798251/