2017-03-29 62 views
1

根據此頁面Go vs Node.js,運行cpu密集型代碼時,Node.js未顯示充分利用CPU內核。如何解決NodeJS未充分利用CPU內核?

如果我使用虛擬化並簡單地添加更多的Node.js實例,我是否會獲得與Go相同的性能?我想還是會有開銷,一個將無法達到同樣的表現。

+0

您可以使用羣集模塊,但它不會幫助您改善請求延遲。取決於你想達到的目標。 – Ajax

回答

0

爲了在運行cpu密集型代碼時充分利用CPU內核,您需要安裝nodejs的集羣模塊。

0

多個進程都可以。對於4個cpus /線程,您需要4個Node.js進程來使用它們。這需要一個可以在不同進程之間分離的工作負載。

Node.js提供Cluster模塊來在多個工作進程之間分配套接字連接,這可能有助於某些工作負載,但是我懷疑這會有助於任何基準工作負載。

0

Node.js確實是一個單線程進程。但是,您可以使用clustering在多個核心上產生多個工作人員。

如果您不使用PM2來產生應用程序,請考慮使用它。 PM2使得多個核心上的產卵工作者非常容易。

PM2開始app.js -i最大

此命令將產生在每個可用的核心員工。

另外,請注意,如果您使用的是會話/套接字,那麼您可能會因羣集而面臨一些問題。