Skip to content

Commit

Permalink
feat: add portsPerGroup property
Browse files Browse the repository at this point in the history
  • Loading branch information
maxeljkin authored and pervovka committed Mar 22, 2023
1 parent 7155799 commit 6697190
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 7 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,11 @@ module.exports = {
port : 8080,

// number of workers' groups; each group will
// have its own port number (port + group number)
groups : 2
// have its own port number (port + group number * ports per group..port + (group number + 1) * ports per group - 1)
groups : 2,

// number of ports per worker group; default 1
portsPerGroup: 2,
},

// extensions to load
Expand Down
2 changes: 1 addition & 1 deletion examples/simple_server/luster.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},

"server" : {
"port" : 10080,
"port" : 8080,
"groups" : 3
}
}
4 changes: 1 addition & 3 deletions examples/simple_server/worker.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
const http = require('http'),
worker = require('luster');

if (worker.wid === 1 || worker.wid === 0) {
console.log('try to open http://localhost:%s', process.env.port);
}
console.log('Worker #%s: try to open http://localhost:%s', worker.wid, process.env.port);

http
.createServer((req, res) => {
Expand Down
2 changes: 2 additions & 0 deletions lib/configuration/check.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ const CHECKS = {
'server.port': { type: ['number', 'string'] },
// increase port for every group
'server.groups': { type: 'number' },
// number of ports for each group
'server.portsPerGroup': { type: 'number' },
// hash of extensions; keys – modules' names, values – extensions' configs
'extensions': { type: 'object' },
// path to node_modules directory which contains extensions
Expand Down
3 changes: 2 additions & 1 deletion lib/master.js
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ class Master extends ClusterProcess {
count = this.config.get('workers', os.cpus().length),
isServerPortSet = this.config.has('server.port'),
groups = this.config.get('server.groups', 1),
portsPerGroup = this.config.get('server.portsPerGroup', 1),
workersPerGroup = Math.floor(count / groups);

let port,
Expand All @@ -240,7 +241,7 @@ class Master extends ClusterProcess {
stopTimeout,
exitThreshold,
allowedSequentialDeaths,
port: isServerPortSet ? port.next(group) : 0,
port: isServerPortSet ? port.next(group * portsPerGroup) : 0,
maxListeners: this.getMaxListeners(),
}));

Expand Down

0 comments on commit 6697190

Please sign in to comment.