Fer*_*doH 21 scaling heroku delayed-job resque ruby-on-rails-3
我想知道在生产环境中是否有任何关于在Heroku上自动调整dynos和worker的好解决方案(可能是针对每个人的不同解决方案,因为它们非常不相关).对于这个,您/公司使用什么?
我找到了很多选择,但对于生产环境来说,它们似乎都不是很成熟.有Heroscale,它似乎引入了一些延迟,因为它不在本地运行,我也听说过一些停机时间.对delayed_jobs进行了修改,这些修改已经很长时间没有更新,并且当前的捆绑包存在一些问题.还有一些与reque相关的替代方案,似乎没有很好地处理一些HTTP异常,导致应用程序崩溃,而其他似乎需要一个始终运行的工作程序来安排其他工作程序,并且还可能遭受一些HTTP异常问题.
好.到底.现在,在Rails3的生产环境中使用Heroku的dynos和worker进行自动缩放的目的是什么?
提前致谢.
sko*_*rks 35
我们前一段时间遇到过这种情况,我花了不少时间对此表示非常沮丧.我会尽力坚持突出点.有几个Heroku自动缩放解决方案乍一看似乎不错.
已经给出heroku-autoscaler的示例实际上是用于自动缩放dynos,并且几乎是唯一一个声称这样做的解决方案(并且它当然不能很好地完成).大多数其他人只会为您声称自动调节工人.所以,让我们首先关注它.您将为工作人员查看的自动识别器取决于您实际使用的后台工作人员,例如delayed_job,resque.这些是人们使用的最常见的后台处理库,因此自动调节器会尝试连接其中一个.您可以使用以下内容:
其中一些在Cedar堆栈上的工作可能需要一些调整.所有这些问题都是因为它试图用自己的头发将自己拉出沼泽地.我们以雇佣员工为例(这可能是最好的一个).它修改了delayed_job,以便工作者自己可以查看队列并在必要时启动更多的工作,如果队列中没有更多的工作,工作人员将全部关闭.有几个问题:
解决这个问题的方法是让一个工作程序连续运行,因此可以定期监视队列,并在必要时执行作业,甚至可以启动更多的工作程序.但是,如果你这样做,你就不会节省任何金钱(你有一个工人每天24小时不间断地运行,并且必须为此付费),这就是heroku上自动跟踪器背后的全部前提.从本质上讲,如果您只是偶尔进行后台处理,或者您有可能失败但重试成功的后台作业,或者您有不需要立即执行的后台作业,那么您可以使用自动缩放库用途对你有用.
这是另一种选择.编写Hirefire的人,后来将其转换为webapp(Hirefire应用程序),其实质是为您外部监控您的Heroku工人/ dynos,并在必要时启动/关闭工作人员dynos.这是免费的测试版,但它现在需要花钱,少于你每周7天,每天24小时运行工人的工资,但如果你偶尔只需要一些后台工作,那仍然不是微不足道的.无论哪种方式,这是唯一可行的方法,以确保您的后台作业基础设施做你想要的(好吧,并滚动你自己的解决方案,这意味着有一个像EC2实例的机器,你可以放置一些脚本,将ping你的heroku应用程序和旋转根据需要启动/关闭工作人员 - 这是一项非常重要的工作.
现在,Hirefire应用程序确实为你自动调整你的dynos,它基于你的heroku请求队列的延迟来实现.然而,我发现这不能很好地工作,也许如果你接近你的heroku应用程序实际存在的亚马逊数据中心(我们不是),你可能会有不同的体验.但是,对于我们来说,它不必要地旋转了一大堆dynos并且无论我调整多少设置都不会旋转它们.你可以说它从那时起它可能已经改进了它的事实,但那是我的经验.
简而言之,如果你想自动调整你的工作人员,使用Hirefire应用程序,你将比你想象的节省更多的钱,但它仍然是最便宜的选择.如果你想自动调整dynos你基本上没有运气.这只是为了获得像Heroku这样的平台的便利而忍受的限制之一.
Pau*_*ill 10
Heroku提供了一个名为AdeptScale的新附加组件,现在只是在Beta之外.
希望这将是一个强大的自动缩放Heroku Dynos解决方案,因为我对目前的选项仍然不满意.
更新(2013年2月4日):我注册了Heroku的Beta程序试用这个附加组件,它对我来说非常好用.偶尔会增加流量,但大多数情况下我会设置为最小数量的dynos.这大大减少了我的账单,并且消除了在高峰使用时间内我可能会很慢的担心.
更新(2013年3月6日):添加了Heroku注册页面的测试版程序链接.
更新(2013年4月14日):看起来自动缩放超出了Beta.它仍然对我很有用.
| 归档时间: |
|
| 查看次数: |
7582 次 |
| 最近记录: |