20

my nodejs process which was running at Linux, now it is hang and the CPU is 100%. Is there anyway I can do to debug it and find the reason? Do I need to collect dump and how? Thanks.

kevin_song
  • 449
  • 1
  • 4
  • 14

2 Answers2

16

There's an npm module called why-is-node-running that can give you info like:

There are 4 known handle(s) keeping the process running and 0 unknown
Known handles:

# Timer
/Users/maf/dev/node_modules/why-is-node-running/example.js:6  - setInterval(function () {}, 1000)
/Users/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer()

# TCP
/Users/maf/dev/node_modules/why-is-node-running/example.js:7  - server.listen(0)
/Users/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer()

# TCP
/Users/maf/dev/node_modules/why-is-node-running/example.js:7  - server.listen(0)
/Users/maf/dev/node_modules/why-is-node-running/example.js:11 - createServer()

# Timer
/Users/maf/dev/node_modules/why-is-node-running/example.js:13 - setTimeout(function () { 
B T
  • 57,525
  • 34
  • 189
  • 207
  • Excellent! Now I know what's in the way. This is exactly what I was looking for. – Alexis Wilke Nov 28 '18 at 18:03
  • This tool helps with processes which have completed their work but not exited the vm. It does not help with infinite loops, which is what this question is about. – Rich May 23 '22 at 14:49
2

For me the why-is-node-running package was not very useful since I had an infinite while loop.
I wish there was a tool that will detect infinite loop all around the project.
What solve for me the issue was to manually reverse some versions of my project and to manually re-add the code I deleted, until I found out what cause my application to hangs, as I said, a infinite while loop.

Or Assayag
  • 5,662
  • 13
  • 57
  • 93
  • 1
    Why there's no tool to detect infinite loops: https://en.wikipedia.org/wiki/Halting_problem I know this is old, but just posting because it's kinda interesting. – Sam DeSota Feb 02 '23 at 20:13