2015-04-22 43 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可能不是瓶頸,在這種情況下,在應用容器中產生更多進程或縮放更多應用容器實例將無濟於事; *您在一個容器中產生的進程越多,它消耗的內存就越多,因此請確保您不會產生太多並超過分配的內存數量(否則應用程序容器將被終止)。