web-dev-qa-db-ja.com

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スワップ)のメモリ使用量です。VPSで4 Ghost インスタンスを実行しています。

したがって、ここでnode index.jsコマンドを使用してGhostインスタンスを実行すると、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

メモリ使用量を減らす方法は?ワーカーの数を調整できる場合、どのファイルを編集する必要がありますか?ここにゴースト開発チームがいる場合、この問題について何か計画はありますか?

6
Aizan Fahri

Ghostはインスタンスごとに単一のノードプロセスを実行します。 htopはプロセスの基盤となるスレッドを示しているため、Ghostインスタンスが1つ実行されているが、node/v8には5つのアクティブなスレッドがあるようです。 JavaScriptはシングルスレッドですが、engine/vm自体はマルチスレッドにすることができます。

私たち(Ghostプロジェクト)は、メモリフットプリントに注意を払い、できる限り小さくして、できることは何でもできるようにします。私は個人的に80MBはかなり良いと思いますが、明らかに人や状況が異なれば「かなり良い」という基準も異なります。

6
jtw