@rayo/storm

1.3.6 • Public • Published
@rayo/storm

Harness the full power of multi-core CPUs.
storm will cluster your application and spawn an instance on each available core. You can expect performance gains of up to 150%.

storm will handle OS signals as expected.

storm is available, by default, with rayo.js. See rayo/options.storm

Install

$> npm i @rayo/storm

Use

import { storm } from '@rayo/storm';

const yourAwesomeFunction = () => {
  console.log(`Hello, I am worker ${process.pid}`);
};

storm(yourAwesomeFunction, {
  monitorPort: 31000
});

Once all worker processes have been spawned, storm will, by default, launch a monitoring service which will enable you to get basic metrics for each process.

The monitor service resource will be mapped to the /monitor path. Detailed information on each worker will be mapped to the /monitor/{workerId} path.

In the above example, the monitor service will be available at http://localhost:31000/monitor

The monitor service is WIP. However, this does not affect storm's stability.

API

storm(work [, options = {}])

@param   {function} Called when starting a worker process.
@param   {object}   [options]
@returns {void}
  • options.workers {number}

    • Number of workers to spawn.
    • Default: Number of available CPU cores.
  • options.master {function}

    • Called when starting the master process.
    • This will only be called once.
    • The master function will be passed one argument; the cluster.
  • options.keepAlive {boolean}

    • Whether the cluster should be kept alive or not. Fork new processes on process death.
    • Default: true
  • options.monitor {boolean}

    • Whether the cluster should be monitored or not.
    • Default: true
  • options.monitorPort {number}

    • Listen on this port for incoming /monitor connections.
    • If port is omitted or is 0, the operating system will assign an arbitrary, unused port.

Contribute

See our contributing notes.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @rayo/storm

Weekly Downloads

33

Version

1.3.6

License

MIT

Unpacked Size

11.2 kB

Total Files

6

Last publish

Collaborators

  • saichholzer