start server.js in cluster mode
This commit is contained in:
133
node_modules/throng/readme.md
generated
vendored
Normal file
133
node_modules/throng/readme.md
generated
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
# Throng
|
||||
|
||||
Dead-simple one-liner for clustered Node.js apps.
|
||||
|
||||
Runs X workers and respawns them if they go down.
|
||||
Correctly handles signals from the OS.
|
||||
|
||||
```js
|
||||
const throng = require('throng');
|
||||
|
||||
throng((id) => {
|
||||
console.log(`Started worker ${id}`);
|
||||
});
|
||||
```
|
||||
|
||||
```
|
||||
$ node example
|
||||
Started worker 1
|
||||
Started worker 2
|
||||
Started worker 3
|
||||
Started worker 4
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
npm install --save throng
|
||||
```
|
||||
|
||||
For older versions of node (< 4.x), use throng 2.x.
|
||||
|
||||
## Use
|
||||
|
||||
Simplest; automatically fork 1 worker per CPU core:
|
||||
|
||||
```js
|
||||
throng(startFunction);
|
||||
```
|
||||
|
||||
Specify a number of workers:
|
||||
|
||||
```js
|
||||
throng(3, startFunction);
|
||||
```
|
||||
|
||||
Specify more options:
|
||||
|
||||
```js
|
||||
throng({
|
||||
workers: 16,
|
||||
grace: 1000,
|
||||
master: masterFunction,
|
||||
start: startFunction
|
||||
});
|
||||
```
|
||||
|
||||
Handle signals (for cleanup on a kill signal, for instance):
|
||||
|
||||
```js
|
||||
throng((id) => {
|
||||
console.log(`Started worker ${id}`);
|
||||
|
||||
process.on('SIGTERM', function() {
|
||||
console.log(`Worker ${id} exiting`);
|
||||
console.log('Cleanup here');
|
||||
process.exit();
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
## All Options (with defaults)
|
||||
|
||||
```js
|
||||
throng({
|
||||
workers: 4, // Number of workers (cpu count)
|
||||
lifetime: 10000, // ms to keep cluster alive (Infinity)
|
||||
grace: 4000 // ms grace period after worker SIGTERM (5000)
|
||||
}, startFn);
|
||||
```
|
||||
|
||||
## A Complex example
|
||||
|
||||
```js
|
||||
const throng = require('./lib/throng');
|
||||
|
||||
throng({
|
||||
workers: 4,
|
||||
master: startMaster,
|
||||
start: startWorker
|
||||
});
|
||||
|
||||
// This will only be called once
|
||||
function startMaster() {
|
||||
console.log(`Started master`);
|
||||
}
|
||||
|
||||
// This will be called four times
|
||||
function startWorker(id) {
|
||||
console.log(`Started worker ${ id }`);
|
||||
|
||||
process.on('SIGTERM', () => {
|
||||
console.log(`Worker ${ id } exiting...`);
|
||||
console.log('(cleanup would happen here)');
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
$ node example-complex.js
|
||||
Started master
|
||||
Started worker 1
|
||||
Started worker 2
|
||||
Started worker 3
|
||||
Started worker 4
|
||||
|
||||
$ killall node
|
||||
|
||||
Worker 3 exiting...
|
||||
Worker 4 exiting...
|
||||
(cleanup would happen here)
|
||||
(cleanup would happen here)
|
||||
Worker 2 exiting...
|
||||
(cleanup would happen here)
|
||||
Worker 1 exiting...
|
||||
(cleanup would happen here)
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
```
|
||||
npm test
|
||||
```
|
||||
Reference in New Issue
Block a user