我很好奇在Heroku上web和worker dynos的区别是什么。他们在他们的定价页面上只给出了一句话的解释,但这让我感到困惑。我怎么知道要从每一个中挑选多少?有没有一个我应该瞄准的比率?我对这个东西非常陌生,所以有人可以给我一个深入的解释,或者可能是某种方式,我可以计算出我需要多少和哪种类型的dynos?
此外,我对他们所说的每个dyno的小时数是什么意思感到困惑。
http://www.heroku.com/pricing
我也偶然发现了这篇文章。作为他们建议的解决方案之一,他们说增加dynos的数量。他们在这里指的是哪种类型的dyno?
http://devcenter.heroku.com/articles/backlog-too-deep
发布于 2011-12-08 17:46:56
如果您需要更多dynos (在Cedar上也称为进程),最好的指示就是您的heroku日志。确保你升级到扩展日志(免费),这样你就可以跟踪你的日志。
您正在查找heroku.router条目,并且您最感兴趣的值是队列值-如果该值始终大于0,那么这是一个好兆头,您需要添加更多的dynos。从本质上讲,这意味着传入的请求超过了您的进程所能处理的数量,因此它们正在排队。如果它们在没有返回任何数据的情况下排队太久,它们将超时。
我担心没有一个理想的比例,你可以让一个应用程序每秒处理100个请求,需要许多web进程,但就是不使用工人。你只需要工作进程,如果你是在后台进行处理,如发送电子邮件等。
ps Backlog太深将是一个Dyno web进程导致的。
更新:2013年3月26日,Heroku从log out put中删除了队列和等待字段。
已从路由器日志消息中删除
队列和等待字段。此外,Heroku路由器不再为传入请求设置X-Heroku-Dynos-In-Use、X-Heroku-Queue- HTTP和X-Heroku-Queue-Wait-Time HTTP头。
发布于 2011-12-08 16:40:06
Dynos基本上是在你的实例上运行的进程。使用新的Cedar堆栈,可以将它们设置为执行任意shell命令。对于web应用程序,您通常有一个称为"web“的进程,它负责响应来自用户的HTTP请求。所有其他进程都是以前称为“工作进程”的进程。它们在后台持续运行,用于处理cron、处理队列和任何您不想占用web进程的繁重计算。您还可以扩展每种类型的进程,以便启动每种类型的多个进程以实现额外的并发。您使用的每一个的数量实际上取决于您的应用程序的需求和它接收到的负载。你可以使用像New Relic插件这样的工具来监控这些东西。查看Heroku的开发中心中关于流程模型和Procfile的文章,了解更多详细信息。
发布于 2012-03-31 10:59:13
许多人提到,没有一个已知的比例,你想要的web工作者和“后台”工作者的比例取决于你如何设计你的应用程序--这是正确的。然而,我认为这可能是有用的补充,作为一般的经验法则,您希望您的web工作人员-因此控制器操作-是闪电般的快速和非常轻量级,以减少延迟的响应时间从浏览器操作。如果有一些浏览器操作需要超过半秒的时间来提供服务,那么您可能希望构建某种类型的系统,将该操作的大部分推送到队列中。
然后,您将设计一个将为此队列提供服务的离线工作进程dyno。它们可能需要更长的时间,因为它们的输出上没有挂起的HTTP响应。也许您从最初的浏览器请求中呈现的页面将提供一些Javascript,该Javascript启动一个线程,该线程每隔5秒检查一次请求是否已完成,或者类似的内容。
我仍然不能给你一个比例,因为其他人已经给出了相同的原因,但希望这能帮助你决定如何架构你的应用程序。(我还应该指出的是,这只是众多有效设计中的一个。)
https://stackoverflow.com/questions/8426244
复制相似问题