2015-04-22 44 views
3

Bluemix上的Node.js应用程序是否会自动缩放以在多个处理器上运行,还是我需要使用Node的集群API自己实现?如果我使用集群,是否会有多个CPU可用?在Bluemix上对Node.js进行集群

回答

8

简答:您需要使用节点集群模块充分利用每个实例中的所有核心。或者,您也可以增加实例的数量。

长答案:您推送到bluemix的应用程序的每个实例都在监督容器中运行。资源控制由linux cgroups管理。每个实例的核心数量不是您可以控制的。在Bluemix上运行一个快速测试,os.cpus()显示了4个内核。如果您想要利用所有4个内核,则可以在node.js应用程序的一个Bluemix实例(warden容器)中使用节点集群模块。

请记住,您还可以增加实例的数量(水平缩放),这可以实现接近线性的结果,具体取决于您使用外部服务的瓶颈。因此,如果您有3个实例,那么每个实例都有4个内核,并且内置负载平衡器会在3个实例之间分配流量。

6

Ram提出的混合模型很有意义。您可能需要执行一些基准测试,以确定您希望在一个应用程序容器中运行多少个进程。您可以使用“cf app”监视负载下每个应用程序实例的CPU利用率,如果它没有完全消耗CPU,那么产生更多进程可能是有意义的。

但是,请注意 - * CPU可能不是瓶颈,在这种情况下,在应用容器中产生更多进程或缩放更多应用容器实例将无济于事; *您在一个容器中产生的进程越多,它消耗的内存就越多,因此请确保您不会产生太多并超过分配的内存数量(否则应用程序容器将被终止)。