2.0.3 • Published 9 years ago

satan-pm v2.0.3

Weekly downloads
7
License
MIT
Repository
github
Last release
9 years ago

satan-pm

Build Status Coverage Status

Upstart friendly node.js cluster manager.

Usage

  Usage: satan [options] -- [args...]

  Options:

    -h, --help                      output usage information
    -V, --version                   output the version number
    -s, --script [path]             worker script path
    -d, --working-directory [path]  working directory
    -i, --instances [count]         number of workers to spawn
    -n, --node-arguments [args]     custom arguments to nodejs
    -p, --scheduling-policy         cluster scheduling policy(none or rr)
    -c, --config [path]             config file path
    -p, --pid-file [path]           pid file path

Graceful Reload

When satan-pm process receives a SIGHUP signal, it will gracefully reload all workers, each at a time.

To do so, it will trigger a disconnect on the worker with cluster.worker.disconnect().

You can hook up the shutdown process to do a custom cleanup procedure(e.g.: you have a worker consuming a Redis queue). For this you need to add a listener to the shutdown event on the process global.

Please note that when you listen to the shutdown event you are responsible for terminating the process(i.e.: calling cluster.worker.disconnect()).

Graceful Shutdown

satan-pm will also do a graceful shutdown when it receives a SIGTERM or SIGINT signal. The behaviour is exactly the same as the graceful reload.

Example

config.json

{
	"workingDirectory": "/app/your-server/current",
	"script": "bin/server.js",
	"arguments": "-p 3000",
	"instances": 4
}

Running:

satan -c config.json

Bonus: GC Signal

When satan-pm receives a SIGUSR2 it will trigger a garbage collection. This is useful when debugging memory leaks or when you need to clean up the memory before a reload.

Bonus: Upstart Configuration

This is a example upstart configuration that plays well with satan:

start on started networking
stop on stopping networking

respawn
respawn limit 5 20

reload signal SIGHUP

chdir /app/your-server/current

setuid deploy
setgid deploy

env NODE_ENV=production

exec /usr/bin/satan -c /app/your-server/shared/satan.json

License

Check here.

2.0.3

9 years ago

2.0.2

10 years ago

2.0.1

10 years ago

2.0.0

10 years ago

1.2.4

10 years ago

1.2.3

10 years ago

1.2.2

10 years ago

1.2.1

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.1

10 years ago