Heroku:networkingdynamic与工人dynamic? 我需要多less/什么比例?
我很好奇networking和工人dynos之间的区别是在Heroku上。 他们在定价页面上给出了一个单句解释,但是这只是让我感到困惑。 我怎么知道每个人挑多less? 有一个比例我应该瞄准? 我对这个东西相当陌生,所以有人可以给出一个深入的解释,或者也许某种方式,我可以计算出我需要多less和哪种types的dynos?
另外,我对每个测功机的小时数是什么意思感到困惑。
http://www.heroku.com/pricing
我也遇到了这篇文章。 作为他们build议的解决scheme之一,他们说增加了dynos的数量。 他们指的是哪种types的测功机?
http://devcenter.heroku.com/articles/backlog-too-deep
如果你需要更多的dynos(雪松上的aka进程),你的最好的指示是你的heroku日志。 确保您升级到扩展日志logging(它是免费的),以便您可以尾随您的日志。
你正在寻找heroku.router条目,你最感兴趣的值是队列的价值 – 如果这是不断超过0,那么这是一个好的迹象,你需要添加更多的dynamic。 从本质上讲,这意味着比进程可以处理更多的请求,所以他们正在排队。 如果排队太久而没有返回任何数据,则会超时。
恐怕没有理想的比例,你可以有一个应用程序每秒处理100个请求,需要很多web进程,但是不能使用工作。 如果您在后台进行处理,比如发送电子邮件等,则只需要工作进程。
ps积压太深将是一个Dynonetworking进程,将导致它。
更新:在2013年3月26日,Heroku删除队列,并等待注销的领域。
队列和等待字段已从路由器日志消息中删除。 此外,Heroku路由器不再为传入的请求设置X-Heroku-Dynos-In-Use,X-Heroku-Queue-Depth和X-Heroku-Queue-Wait-Time HTTP标头。
Dynos基本上是在您的实例上运行的进程。 使用新的Cedar堆栈,可以将它们设置为执行任何任意的shell命令。 对于Web应用程序,通常有一个名为“web”的进程负责响应来自用户的HTTP请求。 所有其他的过程都是以前所谓的“工人”。 这些在cron,处理队列和任何你不想捆绑你的web进程的繁重计算的背景下不断运行。 您还可以缩放每种types的进程,以便每种types的多个进程都将启动以获得更多的并发性。 每个你使用的数量真的取决于你的应用程序的需求和它接收的负载。 您可以使用New Relic插件等工具来监视这些事情。 查看Heroku开发中心的Process Model和Procfile文章,了解更多细节。
许多人提到,没有已知的比例,networking工作者与你想要的“背景”工作者的比例取决于你如何devise你的应用程序 – 这是正确的。 不过,我认为可以补充一点,作为一般的经验法则,您希望您的networking工作人员 – 以及他们所服务的控制器操作 – 闪电般快速且非常轻量级,以减less浏览器操作响应时间的延迟。 如果某些浏览器操作需要比实时服务半秒钟更长的时间,则可能需要构build某种types的系统,将大部分操作推送到队列中。
然后,您将devise一个离线的工作人员dyno(s)将服务这个队列。 他们可能需要更长的时间,因为他们的输出没有挂起HTTP响应。 也许你从最初的浏览器请求渲染的页面,推动行动将服务于一些Javascript启动一个线程,检查,看看是否每5秒完成请求,或沿着这些线路。
我仍然无法给你一个比例来与其他人一样的原因,但希望这可以帮助你决定如何构build你的应用程序。 (我也应该提到这只是许多有效的devise中的一种)。
https://stackoverflow.com/a/19965981/1233555 – Heroku已经随机路由,所以一些dynos可以有堆叠的队列(虽然他们提供冗长的请求),而其他dynos是免费的。 避免这一点,确保所有的请求都很快在您的网页dynos中处理。 这将减less您需要的网页dynos的数量,同时需要更多的工人dynos。
您还需要关心支持并发性的Web应用程序,只有一些Railsconfiguration可以使用Thin,或者使用Thin来仔细编写代码(对于不阻止EventMachine的I / O)。
你可能不得不尝试,而不是计算,看你需要的每种types的多less个。 确保他们的New Relic报告测功机队列 – 参见上面的链接。
简单的答案是,你需要尽可能多的保持排队。
正如John所描述的,如果你开始在你的日志中看到一个队列,那么你需要更多的dynos。 如果你开始看到你的背景排队时间过长(你如何得到这个信息取决于你已经实现了什么),那么你需要更多的工作人员。
没有比例,因为它非常依赖于您的应用程序devise和使用。