5

メモリの問題のために常に壊れている Express.js Web アプリがあります。

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap
out of memory

サービスを開始すると、メモリ使用量は約 170Mb です (htop によって RES メモリとして報告されます)。次に、リクエストを投げ始め、メモリが上昇し始めます。私はmemwatchメモリリークのように見える問題を追跡しようとしていますが、次のようなmemwatch.HeapDiff()レポートがあります:

{ before: { nodes: 2093729, size_bytes: 197165296, size: '188.03 mb' },
  after: { nodes: 2491264, size_bytes: 232097040, size: '221.34 mb' },
  ...

...アプリがヒープに221.34mbを使用していることを理解しています。しかし、htop壊れたときのメモリ使用量は約2GBです。

問題は、私の仮定が正しければ、まだ htop によって RES メモリとして報告されている非ヒープ メモリを使用している可能性があるということです。

4

1 に答える 1

4

これは以前に見たことがありますが、使用済みで報告されたメモリは、htop で表示されるメモリよりもはるかに小さいものでした。

私たちの場合、小さなように見えたのは JavaScript のメモリ リークでしたが、修正するとメモリの問題は解決しました。

私はそれを診断するために行った手順を詳述した投稿を書きましたが、ここに投稿するには長すぎます.

https://techtldr.com/simple-guide-to-finding-a-javascript-memory-leak-in-node-js/

于 2016-10-14T15:15:35.767 に答える