3

Node JS で構築されたアプリが、いくつかの興味深い問題を引き起こしていることを確認しています。もともと Node JS v0.3.0 で実行されていましたが、v0.10.12 にアップグレードしました。Node JS を使用してサーバー上でグラフをレンダリングしていますが、メモリ使用量がグラフごとに上昇し続けていることに気付きました。

Q1 : ノード JS プロセスの上部にある RES 列を監視していますが、これは正しいですか、それとも別のものを監視する必要がありますか?

変数をnullに設定して、メモリをシステムリソースに再割り当てしようとしました(これを解決策としてどこかで読みました)が、わずかな違いしかありません。

アプリを 1.5 GB までプッシュしたところ、アプリが機能しなくなり、プロセスが停止しているようには見えません。私が奇妙だと思ったエラーメッセージはありません。

Q2 : 他にできることはありますか?

ありがとうスティーブ

4

2 に答える 2

1

それはバージョンの大幅なジャンプです。最新の安定版で動作させるために行ったコード変更を共有したい場合があります。API は v0.3 と同じではないため、問題の一部である可能性があります。

そうでない場合は、実際のリークよりもヒープの断片化に起因する可能性が高い問題です。それ以降の v8 バージョンでは、ガベージ コレクションがより自由になり、パフォーマンスを改善するためのクリーンアップが行われます。(これに関する議論についてはhttp://code.google.com/p/chromium/issues/detail?id=112386を参照してください)

--max_old_space_size=32v8 が使用できるメモリ量を約 32MB に制限するアプリケーションを実行してみてください。ドキュメントには「古い世代の最大サイズ」と記載されているため、正確に32MB にはならないことに注意してください。より良い技術的な説明がないため、その周りに。

また、外部メモリの使用量を で追跡できます--trace_external_memory。これにより、アプリケーションで外部メモリ (バッファなど) が保持されているかどうかを知ることができます。

アプリケーションが約 1.5GB ぶら下がっていることに注意してください。おそらく 64 ビット システムを使用していることがわかります。あなたはそれが機能しなくなるとだけ言いましたが、その間にCPUが回転しているかどうかはわかりませんでした. また、サンプル コードがないため、何が原因でこの問題が発生するのかわかりません。

v0.11.3最新の開発 (この記事の執筆時点) で実行してみて、問題が修正されているかどうかを確認してください。問題を解決する可能性のある多くのパフォーマンス/メモリの強化に取り組んでいます。

于 2013-07-01T06:23:44.110 に答える
0

メモリのどこかに(もう使用されていない?)ダイアグラム(?)を保持するメモリリーク(クロージャの形で?)があると思います。

v8 は、1 GB を超えるメモリになると、少し調整が必要になることがあります。--noincremental_markingおよび/または--max_old_space_size=81920000(8 GB が利用可能な場合) を試してください。

その他のオプションを確認しnode --v8-options--trace*-parameters を調べて、ノードの速度低下/停止の原因を特定します。

于 2013-07-01T06:55:26.953 に答える