Node.exe Stuck at 100% CPU

I have a ExpressJS node.js application running on IISNode on Windows Server 2016 VM with 4 cores and 32GB of memory. I am able to set one process per core, so I have 4 node.exe’s running for my app. Node version is v6.10.3.

This is what the resources normally look like:

I can see that the node garbage collection seems to be occurring since the memory fluctuates. As in the screenshot, it will hover normally way below the peak working.

However I am trying to find the cause for one of these processes to spike to 100% CPU utilization. Whenever this occurs, I am forced to kill the node.exe because my entire application stalls. It will sit stalled at peak CPU, and all further requests are then spinning.

  1. What can causes high CPU utilization in the node.exe and how can it be locked at 100%? Is this due to the garbage collection stalling?
  2. What tools can be uses to figure out what node.exe is stalled on to better debug my application?
  3. Should IISNode be working as a load balancer and delegating all requests toward another core?

Right now I am forced to recycle my app pool on a timer to completely kill all working node processes and restart them. This curbs the application going down for long periods.

I appreciate any insight!

Leave a Comment