Node: Add a flag to collect heap dump before crashing on out of memory

Created on 10 Apr 2020  路  5Comments  路  Source: nodejs/node

Is your feature request related to a problem? Please describe.

Existing ways to collect a (full) heap dump are not production-friendly. The proposed flag can be enabled for production application in order to help with post-mortem memory leak diagnostics.

Describe the solution you'd like

Add a new new flag (say, --heapsnaphot-on-outofmemory) that would enable collection of a heap dump before terminating node process in the out of memory scenario.

Additional context. Such option (-XX:+HeapDumpOnOutOfMemoryError) is available in JVM (e.g. in OpenJDK) for a long time and many developers use it.

Describe alternatives you've considered

I can see the following alternatives:

  • --heapsnapshot-signal=signal - this option assumes a signal that is sent to node process externally. Thus, it's not possible to trigger it on out-of-memory.
  • heapdump user-land module - quite similar to sending a signal, yet it's triggered programmatically inside the node application.
  • node-oom-heapdump user-land module - seems to implement the proposed feature, but I believe that such feature should belong to the core in order to be well-tested.
  • --heap-prof - this option enables V8 sampling heap profiler which reports are not quite the same as a full heap dump (yet, they're certainly valuable for users).

Most helpful comment

Duplicate of #27552. That issue also discusses the problems with that feature.

All 5 comments

That would be a great feature. Is there already a hook in V8 to run actions when process runs out of memory?

That would be a great feature. Is there already a hook in V8 to run actions when process runs out of memory?

By looking at node-oom-heapdump's documentation, I can say that it's possible to use isolate.SetOOMErrorHandler for the purpose (there may be better solutions, but I'm not sure).

Duplicate of #27552. That issue also discusses the problems with that feature.

Duplicate of #27552. That issue also discusses the problems with that feature.

@bnoordhuis Thanks for this reference. I searched for existing issues, but probably missed this one. Going to read it now.

Closing this one as a duplicate. Going to upvote the CLI option in #27552.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

seishun picture seishun  路  3Comments

Brekmister picture Brekmister  路  3Comments

filipesilvaa picture filipesilvaa  路  3Comments

Icemic picture Icemic  路  3Comments

vsemozhetbyt picture vsemozhetbyt  路  3Comments