why-is-node-running

    2.2.0 • Public • Published

    why-is-node-running

    Node is running but you don't know why? why-is-node-running is here to help you.

    Installation

    Node 8 and above:

    npm i why-is-node-running -g

    Earlier Node versions (no longer supported):

    npm i why-is-node-running@v1.x -g

    Usage

    const log = require('why-is-node-running') // should be your first require
    const net = require('net')
     
    function createServer () {
      const server = net.createServer()
      setInterval(function () {}, 1000)
      server.listen(0)
    }
     
    createServer()
    createServer()
     
    setTimeout(function () {
      log() // logs out active handles that are keeping node running
    }, 100)

    Save the file as example.js, then execute:

    node ./example.js

    Here's the output:

    There are 5 handle(s) keeping the process running
    
    # Timeout
    /home/maf/dev/node_modules/why-is-node-running/example.js:6  - setInterval(function () {}, 1000)
    /home/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer()
    
    # TCPSERVERWRAP
    /home/maf/dev/node_modules/why-is-node-running/example.js:7  - server.listen(0)
    /home/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer()
    
    # Timeout
    /home/maf/dev/node_modules/why-is-node-running/example.js:6  - setInterval(function () {}, 1000)
    /home/maf/dev/node_modules/why-is-node-running/example.js:11 - createServer()
    
    # TCPSERVERWRAP
    /home/maf/dev/node_modules/why-is-node-running/example.js:7  - server.listen(0)
    /home/maf/dev/node_modules/why-is-node-running/example.js:11 - createServer()
    
    # Timeout
    /home/maf/dev/node_modules/why-is-node-running/example.js:13 - setTimeout(function () {
    

    Important Note! unrefed timers do not prevent the Node process from exiting. If you are running with Node v11.0.0 and above, unrefed timers will not be listed in the above list. Unfortunately, this is not supported in node versions below v11.0.0.

    CLI

    You can also run why-is-node-running as a standalone if you don't want to include it inside your code. Sending SIGUSR1/SIGINFO signal to the process will produce the log. (Ctrl + T on macOS and BSD systems)

    why-is-node-running /path/to/some/file.js
    probing module /path/to/some/file.js
    kill -SIGUSR1 31115 for logging
    

    To trigger the log:

    kill -SIGUSR1 31115
    

    Require CLI Option

    You can also use the node -r option to include why-is-node-running:

    node -r why-is-node-running/include /path/to/some/file.js

    The steps are otherwise the same as the above CLI section

    License

    MIT

    Install

    npm i why-is-node-running

    DownloadsWeekly Downloads

    15,558

    Version

    2.2.0

    License

    MIT

    Unpacked Size

    7.18 kB

    Total Files

    7

    Last publish

    Collaborators

    • mafintosh
    • yoshuawuyts