2017-04-10 18 views
1

Nodejs/V8でGCプロセスの理解を少し深めていきたいと思います。NodeJS、PM2、GC、Grafana - よく理解しています。

GCがトリガーされ
  • 、これはノードJSのイベントループを遮断しない:

    は、次のような質問のためのいくつかの情報を提供してもらえますか?

  • GCは独自のプロセスで実行されているのですか、それとも単にイベントループのサブメソッドですか?

  • node12sプロセスをPm2(クラスタモード)で起動すると、 インスタンスは実際に自分のプロセスを持っているか、 インスタンス間で共有されているGCですか?私はGrafana (https://github.com/RuntimeTools/appmetrics-statsd)を使用していますロギング目的で

  • 、誰か は、これらのゲージの詳細\違いを説明することができます

    は、バイト単位でのJavaScriptのヒープのサイズをgc.size。

    gc.used JavaScriptヒープで使用されるメモリ量(バイト単位)。

Memory usage

  • GCは、ストレステストに関連して(gc.used)メモリを解放していない任意のシナリオがありますか?

質問は私が現在直面している問題に関連しています。 GCの使用メモリが上昇しており、メモリを解放しません(古典的なメモリリーク)。問題は、多くのリクエストがあったときにのみ表示されるということです。

に...任意のアイデアを、私はPM2の再起動を避けるために、MAX-古い空間サイズで遊んが、そのGCはもう解放されていないと、アプリケーション全体が非常に遅くなっているように見えますか? OK

答えて

0

なぜゴミが再びダウンしたことがないというplateuを打ちますコレクションは高価ですか? V8 JavaScriptエンジンは、世界的なガベージコレクタメカニズムを採用しています。実際には、ガベージコレクションの実行中にプログラムの実行が停止することを意味します。

https://blog.risingstack.com/finding-a-memory-leak-in-node-js/

関連する問題