我们正在使用Heroku.这很棒.我喜欢它.我们每个月花费几千,在实例和数据库之间,通常不会更快乐.但是,我们正在确定一个新项目,该项目要求我们达到非常积极的延迟目标 – 低于100毫秒.
目前,我们是一个Rails 3应用程序处理我们的请求的80-90%子100ms,由新文件测量.鉴于我们必须从客户端的角度来看达延迟目标,我将再次捏造另一个10%的成功率(因此降低到大约3/4的请求).
是的,Heroku偶尔会出现网络故障,这可能导致延迟,但我们很好地将我们的成功与Heroku的成功联系在一起,至少在短期内如此.
如果我们想要达到95%的请求达到100毫秒的延迟目标,我会看到3个选项:
> a优化Heroku中当前的rails堆栈
> b转到直接AWS或其他托管服务提供商
> c将功能重建为我觉得更有信心可以达到延迟目标的东西.可能是Java.
a显然是主要的候选人,但我已经摘掉了低调的果实. c可能最有可能成功,但也需要最多的工作(今天大多数工程师都来自Java,所以我们没有任何Ruby-> Java惩罚).但是b是一种黑马,它可能是好的,或者可能更糟 – 我不知道如何在不尝试并加载测试的情况下判断,但是,那基本上就是这么做,看看它是不是成功的.
我正在尝试在它们之间做出决定,或者找到一种方法来决定它们之间.有什么建议?经验?
*我们的大多数请求都不要求我们呈现html.
解决方法
Rewriting generally doesn’t give you the return you’re expecting.
就个人而言,我会考虑优化您现有的应用程序.如果正确构建,100ms非常容易获得,而另一个主机不会真正给你任何速度,Heroku不会,而不会增加一些头痛.
我们在Heroku上运行了许多Rails应用程序,其中一些应用程序的响应时间不到50毫秒.