Node.js のメモリ使用量を監視してメモリリークを撲滅!開発効率をアップさせる方法
Node.js のメモリ使用量を監視する方法
ここでは、Node.js のメモリ使用量を監視する 3 つの方法をご紹介します。
process.memoryUsage()
関数は、Node.js プロセスによって使用されているメモリの量に関する情報を提供します。この関数は、以下のプロパティを持つオブジェクトを返します。
rss
: プロセスによって使用されている物理メモリの量 (バイト単位)heapTotal
: ヒープで使用可能なメモリの合計量 (バイト単位)external
: ネイティブアドオンによって使用されているメモリの量 (バイト単位)
以下の例では、process.memoryUsage()
を使用して、メモリ使用量を 5 秒ごとにコンソールに出力する方法を示します。
const util = require('util');
setInterval(() => {
const memoryUsage = process.memoryUsage();
console.log(util.inspect(memoryUsage, null, 4));
}, 5000);
npm パッケージを使用する
メモリ使用量を監視するのに役立つ npm パッケージがいくつかあります。人気のあるパッケージのいくつかを次に示します。
これらのパッケージを使用するには、それらをプロジェクトにインストールしてから、ドキュメントに従って使用する必要があります。
Chrome DevTools を使用して、Node.js アプリケーションのメモリ使用量を監視することもできます。これを行うには、次の手順を実行します。
- Chrome DevTools を開き、[ソース] タブに移動します。
- [パフォーマンス] パネルを開きます。
- [メモリ] タブをクリックします。
これにより、Node.js アプリケーションのメモリ使用量に関する詳細な情報が表示されます。
メモリ使用量を監視するその他のヒント
- アプリケーションがメモリをどのように使用しているかを理解するために、ベースライン メモリ使用量を測定します。
- メモリ使用量にスパイクがある場合は、その原因を突き止め、修正します。
- アプリケーションで使用していない変数やオブジェクトは解放するようにします。
- 定期的にメモリリークがないかどうかチェックします。
これらのヒントに従うことで、Node.js アプリケーションのメモリ使用量を効果的に監視し、パフォーマンスと安定性を向上させることができます。
Node.js のメモリ使用量を監視するサンプルコード
process.memoryUsage() を使用する
const util = require('util');
setInterval(() => {
const memoryUsage = process.memoryUsage();
console.log(util.inspect(memoryUsage, null, 4));
}, 5000);
このコードを実行すると、次のような出力がコンソールに表示されます。
{
rss: 2097152,
heapTotal: 5242880,
heapUsed: 3129216,
external: 0
}
{
rss: 2097152,
heapTotal: 5242880,
heapUsed: 3129216,
external: 0
}
{
rss: 2097152,
heapTotal: 5242880,
heapUsed: 3129216,
external: 0
}
...
この出力には、以下の情報が含まれています。
memwatch-next を使用する
この例では、memwatch-next
パッケージを使用して、メモリリークを検出します。
const memwatch = require('memwatch-next');
const hd = new memwatch.HeapDiff();
setInterval(() => {
const diff = hd.end();
console.log(diff);
}, 5000);
このコードを実行すると、メモリ使用量の変化に関する情報が出力されます。メモリリークが発生すると、メモリ使用量が継続的に増加することがわかります。
この例では、基本的なメモリ監視のみを行っています。より高度な分析を行うには、memwatch-next
パッケージのドキュメントを参照してください。
Node.js のメモリ使用量を監視するその他の方法
オペレーティングシステムには、システム全体のパフォーマンスを監視するためのツールが組み込まれています。これらのツールを使用して、Node.js プロセスを含むすべてのプロセスのメモリ使用量を監視できます。
- Windows: タスク マネージャーを使用できます。
- macOS: アクティビティ モニタを使用できます。
- Linux:
top
コマンドまたはhtop
コマンドを使用できます。
クラウドモニタリングツールを使用して、Node.js アプリケーションを含むクラウドで実行されているアプリケーションのメモリ使用量を監視できます。これらのツールは、通常、より詳細な監視機能とアラート機能を提供します。
- Datadog
- New Relic
- AppDynamics
APM ツールの使用
APM (Application Performance Monitoring) ツールを使用して、Node.js アプリケーションのパフォーマンスを監視できます。これらのツールは、メモリ使用量だけでなく、応答時間、スループット、エラー レートなどの他のメトリックも監視できます。
- Dynatrace
- Elastic APM
- Splunk APM
- 必要に応じて、ガベージ コレクションを手動で実行します。
javascript node.js memory