我使用PM2來運行我的nodejs應用程序。Pm2集羣模式,理想的工人數量?
以集羣模式啓動時,「pm2啓動服務器-i 0」:PM2將自動產生與CPU核心數量相同的工作人員。
什麼是理想的工人數量,爲什麼?
我使用PM2來運行我的nodejs應用程序。Pm2集羣模式,理想的工人數量?
以集羣模式啓動時,「pm2啓動服務器-i 0」:PM2將自動產生與CPU核心數量相同的工作人員。
什麼是理想的工人數量,爲什麼?
謹防上下文開關 當你的機器上運行多個進程,努力確保每個CPU核心將是kepy忙於通過一次單一的應用程序線程。作爲一般規則,您應該看看產生N-1個應用程序進程,其中N是可用CPU內核的數量。這樣,每個進程都可以保證一個內核得到很好的分割,並且有一個備用內核調度程序來運行其他服務器任務。此外,請嘗試確保服務器除了Node.JS應用程序將運行很少或沒有工作,因此進程不會爲CPU而戰。
我們錯誤地將兩個繁忙的node.js應用程序部署到了我們的服務器,兩個應用程序都產生了N-1個進程。應用程序的進程開始激烈競爭CPU,導致CPU負載和使用率急劇增加。儘管我們在強健的8核服務器上運行這些服務器,但由於上下文切換,我們付出了明顯的代價。上下文切換是CPU暫停一個任務以便在另一個任務上工作的行爲。當上下文切換時,內核必須掛起一個進程的所有狀態,同時加載並執行另一個進程的狀態。之後簡單減少工藝的應用產生了使得它們每個共享芯的數目相等的數目,負載顯著下降:
https://engineering.gosquared.com/optimising-nginx-node-js-and-networking-for-heavy-workloads