npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nc-cluster

v0.0.1

Published

Simple and powerful helper for the inbuilt cluster module

Readme

node-nc-cluster

Simple helper for node.js inbuilt cluster module. It is a more lightweight variant of iscaas cluster-master module that allows more customzation.

#Features:

  • Configuration/Customzation. Multiple configurations and easily to add more.

  • Does not interfeir with others libraries. You can safely use libraries that take advantage of the cluster module to as lon the never call require('cluster').setupMaster method.

  • Monitor. The library will monitor the system and respawn, increase and decrease the number of workers depending of the resource usage.

#Usage:

var ncCluster = require('nc-cluster');

// (optional)
ncCluster.concurrency({
  min: 2,
  max: 4  
});

// (optional)
ncCluster.worker({
  shutdownTime: 5000 // ms to do a graceful shutdown before automatically killed by force.
});
        
// (required)
ncCluster.init({
  exec: __dirname + '/worker.js'
});

// (optional)
ncCluster.restart();

// (optional)
ncCluster.quit();

#Installation:

npm install nc-cluster

#Test: Within the nc-cluster folder, type:

npm test

#Reference

##.init(options) Initialize the library. Will call the inbuilt require('cluster').setupMaster

##.concurrency(options) Set concurrency options. Default:

min: 1 max: (number of CPU cores)

##.worker(options) Set worker options. Default:

shutdownTime: 5000 (shutdown time in ms each worker has to do a graceful shutdown before it will be killed by force)

##.gc(options) Set worker options. Default:

speed: 1000 (Minimun time in ms the garbage collector will run, which checks the health of the system)

##.restart(options) Set worker options. Default:

force: false

##.quit(options) Set worker options. Default:

force: false

##.size() Return the internal process count. May not be equal to the real worker count.

##.workers() Return array Return a copy of the internal worker array. Each object in the returned object will be a instance of the "Worker" class defined below.

##class Worker

Helper class. All instances in the array returned from .workers() will be of this type.

###.isAlive() Return bool Return true if the worker exists or soon will exist, otherwise false.

###.isOnline() Return bool Return true if the event 'online' has been fired on the worker, otherwise false.

###.isListening() Return bool Return true if the event 'listening' has been fired on the worker, otherwise false.

###.isDisconnected() Return bool Return true if the event 'disconnect' has been fired on the worker, otherwise false.

###.kill(ms) Kill the worker and give it [ms] ms to do a graceful shutdown.

###.uptime() Return int Return uptime in ms.

###.onOnline(function) Set 'online' event handler. Will overwrite the previus if it has been already set. Even it may overwrite the internal event handler, is it safe to call it from client code.

###.onListening(function) Set 'listening' event handler. Will overwrite the previus if it has been already set. Even it may overwrite the internal event handler, is it safe to call it from client code.

###.onDisconnected(function) Set 'disconnect' event handler. Will overwrite the previus if it has been already set. Even it may overwrite the internal event handler, is it safe to call it from client code.

###.onExit(function) Set 'exit' event handler. Will overwrite the previus if it has been already set. Even it may overwrite the internal event handler, is it safe to call it from client code.

###.id() Return [worker ID] Return worker ID. Same id will be used as the key in the inbuilt cluster module:

var id = worker.id(),
    inbuiltWorker = require('cluster').workers[id];

//inbuiltWorker.send, inbuiltWorker.on('message) or what you may want.

#License Copyright (c) Fredrik Olofsson ("Author") All rights reserved.

The BSD License

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.