Memory
是否可以減少 NodeJS 的記憶體使用(例如 Ghost 部落格平台)
CPU [ 0.0%] Tasks: 15, 2 thr; 1 running Mem [|||| 14/256MB] Load average: 0.00 0.00 0.00 Swp [| 1/256MB] Uptime: 15 days, 06:02:31
以上是沒有 Ghost 實例時我的伺服器上的記憶體使用情況(Ramnode,256MB RAM 和 256MB Swap)。在我的 VPS 上,我正在執行 4 個Ghost實例。
因此,當我在這裡使用命令執行 Ghost 實例時
node index.js
,它會生成 5 個工作人員。PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 10380 user 20 0 975M 80328 7712 S 0.0 30.6 0:00.00 node index.js 10381 user 20 0 975M 80328 7712 S 0.0 30.6 0:00.00 node index.js 10382 user 20 0 975M 80328 7712 S 0.0 30.6 0:00.00 node index.js 10383 user 20 0 975M 80328 7712 S 0.0 30.6 0:00.00 node index.js 10384 user 20 0 975M 80328 7712 S 0.0 30.6 0:00.00 node index.js
5個工人其實不少。而且30%也很多。
而現在,
htop
閱讀CPU[ 0.0%] Tasks: 18, 7 thr; 1 running Mem[||||||||||||||||||| 82/256MB] Load average: 0.00 0.00 0.00 Swp[|| 8/256MB] Uptime: 15 days, 06:22:29
如何減少記憶體使用?如果我可以調整工人的數量,我應該編輯哪個文件?如果我們這裡有 Ghost 開發團隊,你對這個問題有什麼計劃嗎?
Ghost 每個實例執行一個節點程序。我相信您所看到的是
htop
顯示程序的底層執行緒,因此看起來您有一個 Ghost 實例正在執行,但 node/v8 有五個活動執行緒。儘管 JavaScript 是單執行緒的,但引擎/vm 本身可以是多執行緒的。我們(Ghost 項目)確實注意記憶體佔用,以便我們可以做任何我們可以做的事情,使其盡可能小。我個人認為 80MB 相當不錯,但顯然不同的人和情況對什麼是“相當不錯”有不同的標準。