Memory

是否可以減少 NodeJS 的記憶體使用(例如 Ghost 部落格平台)

  • March 31, 2017
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 相當不錯,但顯然不同的人和情況對什麼是“相當不錯”有不同的標準。

引用自:https://serverfault.com/questions/632176