在Heroku上,使用更大的"Dynos"和使用更多的"Dynos"之间存在权衡。

6
在我们的Heroku Rails 4.2 Web应用程序上运行独角兽(Unicorn)工作进程,每个工作进程需要约230MB的内存。在'1X' Heroku dyno上,我们可以运行2个工作进程,在'2X' Heroku dyno上可以运行4个工作进程。CPU要求相当低。
如果我们需要8个工作进程来处理流量,使用四个“1X” dynos还是两个“2X” dynos来获取8个工作进程的技术/性能折衷有哪些?
(两年前,关于Heroku路由到dynos的问题曾经被广泛报道。据我记得,更大的dynos和更多的workers效果最佳,因为请求被路由到“繁忙”的dynos的可能性较小。但我没有找到任何有关在何时最好使用更大的dynos与更多的dynos的当前指南。)
1个回答

1
据我所知,正如您已经提到的,Heroku路由器不知道也不关心特定dyno中的负载,并通过随机选择算法发送请求。https://devcenter.heroku.com/articles/http-routing 因此,很可能会看到许多连续的请求发送到同一个dyno。我正在观察我的当前应用程序的行为。
但是在您的情况下,如果一个worker需要230MB,则不能在Standard-1X dyno中使用2个worker,因为它们的最大内存为512M。因此,我认为您应该选择具有3-4个worker的2X dynos。2X dynos可以使用高达1GB的内存。

我不太了解Rails,但对于Java情况,如果您的应用程序需要460MB堆大小,则无法在1X机器上运行,因为还有其他开销,如操作系统、本地内存等。这就是为什么我写道他/她不能使用2个worker的1X机器。 - cool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接