Git Product home page Git Product logo

node-cluster-harakiri's Introduction

npm version CI workflow

Cluster Harakiri

This library provides a wrapper around the standard node cluster module. The library will automatically terminate and restart cluster workers based on time or connections. These parameters can be configured for the particular use case using environmental variables or programmatic initialization.

Prerequisites

This project requires NodeJS (version 16 or later) and NPM. Node and NPM are really easy to install. To make sure you have them available on your machine, try running the following command.

$ npm -v && node -v
8.15.0
v16.17.0

Table of contents

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Installation

BEFORE YOU INSTALL: please read the prerequisites

To install and set up the library, run:

$ npm install cluster-harakiri

Or if you prefer using Yarn:

$ yarn add cluster-harakiri

Usage

Start with cloning this repo on your local machine:

$ git clone https://github.com/smartfile/node-cluster-harakiri.git
$ cd node-cluster-harakiri

Running the tests

$ npm test

Running the linter

$ npm run lint

API

setupHarakiri

setupHarakiri(options)

Supported options and result fields for the setupHarakiri method are listed below. Most options are also available as environmental variables. It is not necessary to call this method. Options can be set in the environment and this method will be called if not already called when workers are created.

Options

ttl

Type Default value Environmental variable
number HARAKIRI_WORKER_TTL

If present, the workers will be terminated after at least ttl seconds.

connectionLimit

Type Default value Environmental variable
number HARAKIRI_WORKER_CONN_LIMIT

If present, the workers will be terminated after at least connectionLimit connections.

checkInterval

Type Default value Environmental variable
number 30 HARAKIRI_WORKER_CHECK_INTERVAL

The periodic interval, in seconds, to check if there are any workers to terminate.

termDelay

Type Default value Environmental variable
number HARAKIRI_WORKER_TERM_DELAY

If present, the amount of time to delay, in seconds, between terminating workers. This can be used to prevent many or all workers from being terminated at the same time.

closeTimeout

Type Default value Environmental variable
number HARAKIRI_WORKER_CLOSE_TIMEOUT

If present, the amount of time, in seconds, to wait for the worker to exit after termination. This can be used to prevent a worker from running indefinitely if the connection stays alive.

restartWorker

Type Default value Environmental variable
boolean true

If true, creates a new worker when a worker terminates.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Add your changes: git add .
  4. Commit your changes: git commit -am 'Add some feature'
  5. Push to the branch: git push origin my-new-feature
  6. Submit a pull request ๐Ÿ˜Ž

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

License

MIT License ยฉ SmartFile

node-cluster-harakiri's People

Contributors

btimby avatar cabarnes avatar

Watchers

 avatar  avatar  avatar

node-cluster-harakiri's Issues

Provide a grace period.

Keep track of the time that a process was killed. Allow the user to configure a grace period. Ensure nothing else is killed within that grace period. This will ensure that all the workers are not recycled at once.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.