Socket
Socket
Sign inDemoInstall

cluster-magic

Package Overview
Dependencies
2
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    cluster-magic

run multi-threaded node.js network applications using the native cluster module


Version published
Weekly downloads
12
increased by500%
Maintainers
1
Install size
66.0 kB
Created
Weekly downloads
 

Readme

Source

cluster-magic

run multi-threaded node.js network applications using the native cluster module

Features

  • Run network applications within multiple processes multiplexed by node.js
  • Easy to use, configless
  • Standalone, no external process managers required
  • Respawn dead/failed workers
  • Gracefull application shutdown via sigterm
  • Hot-Reload/Hot-Restart via sighup
  • Delayed restart of failed processes to avoid infinite restart loops

Install

$ npm install cluster-magic --save
$ yarn add cluster-magic

Usage

A working snippet is available in the examples directory. Just run node examples/startup.js

File: startup.js

Initializes the cluster application

const _cluster = require('cluster-magic');
const _app = require('./application.js');

// start the clustered app (8 workers)
_cluster.init(_app, {
    numWorkers: 8
});

File: application.js

Your socket based application which should be multiplexed

const net = require('net');

function startup(){
    const server = net.createServer((socket) => {
        // connections never end
    });
    
    server.listen(8000);
}

module.exports = {
    // init hook
    init: startup
};

Hot-Restart / Hot-Reload

To hot-restart (zero downtime) an application, just send a SIGHUP to the master process. This spawns new workers and disconnects all current workers from the cluster-proxy

Example

# send SIGHUP to process 12345
kill -HUP 12345

Signals

  • SIGHUP Restart workers
  • SIGTERM Gracefull application shutdown
  • SIGINT Gracefull application shutdown

Delayed Restarts

cluster-magic comes with as simple delayed-restart policy which suppresses infinite restart loops.

  • In case a process dies, an internal counter will be incremented.
  • If a threshold of 10 is reached the process restart is delayed by counter*200ms to avoid infinite restart loops on internal application errors. Well..this is may not what you expect from a "clustered application" but such an error requires that a manual fix will take place by the operations team (_logger.alert event is triggerd which SHOULD be observed)
  • The counter is decremented by 1 once per minute.

Environment

To specify the number of workers you can easily pass the environment variable NUM_WORKERS to the nodejs process. Default is set to num_cpus*2

License

cluster-magic is OpenSource and licensed under the Terms of The MIT License (X11) - your're welcome to contribute

FAQs

Last updated on 10 Feb 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc