鍍金池/ 問答/Linux  HTML/ pm2發(fā)布程序時開多少個工作線程比較合適呢?

pm2發(fā)布程序時開多少個工作線程比較合適呢?

因為node.js是單線程的,所以想要充分利用多核cpu資源,那么就需要開啟多個線程了,例如 :

pm2 start app.js -i 4

今天在看pm2的相關資料,有如下疑問:

1、這里面的4一般和電腦cpu的核心數(shù)是什么關系呢?
2、假設我是8核的cpu,這個數(shù)字設置為多少好一點呢?
3、是不是這個數(shù)字一定(最好)不能(不要)大于cpu的核心數(shù)么?
4、如果我想在一臺服務器上發(fā)布多個程序:app.js、app2.js,那么他們的線程數(shù)開多少比較合適呢?
5、pm2開多個線程應該不算通常集群的概念吧?和node.js集群應該完全不同?

回答
編輯回答
離殤

1、 -i 指定的 cluster 個數(shù)與 cpu 核數(shù)沒有直接關系
2、這個問題要從多個角度考慮,你應該使用多少個 cluster 更重要的是取決于你應用程序的并發(fā)量大小與服務器的內(nèi)存大小。應用程序并發(fā)量太小,而開啟了多余的cluster實例會占用額外的服務器內(nèi)存空間;并發(fā)量過大,也要注意保證占用的內(nèi)存不超過服務器的內(nèi)存,一般會保證在總內(nèi)存的6、7成以下。
3、不是
4、與第二問題一致
5、pm2 使用的就是 node.js 的集群

2017年7月5日 22:48
編輯回答
尐潴豬

糾正一下,是多進程不是多線程。

通常情況下,由于 node.js 是單線程的運行時環(huán)境,而每個獨立的進程(線程)只能使用有限的內(nèi)存和CPU執(zhí)行核,需要這種多進程的集群模式來充分利用機器的性能。

比如一個進程限制使用 1 核心 CPU,1 GB 內(nèi)存,機器擁有 16 核心和 32 GB 的內(nèi)存,這時候為充分利用內(nèi)存可以開啟 32 個進程。(當然,通常情況下進程數(shù)量建議不要大于 CPU 的核心數(shù)量)

2017年3月31日 03:32