make the number of workers configurable

This commit is contained in:
ansuz
2020-04-16 13:53:45 -04:00
parent 0465f31a45
commit ba6faca02e
3 changed files with 36 additions and 1 deletions

View File

@@ -253,6 +253,8 @@ module.exports.create = function (config, cb) {
channelExpirationMs: config.channelExpirationMs,
verbose: config.verbose,
openFileLimit: config.openFileLimit,
maxWorkers: config.maxWorkers,
}, w(function (err) {
if (err) {
throw new Error(err);

View File

@@ -193,7 +193,32 @@ Workers.initialize = function (Env, config, _cb) {
};
nThen(function (w) {
OS.cpus().forEach(function () {
const max = config.maxWorkers;
var limit;
if (typeof(max) !== 'undefined') {
// the admin provided a limit on the number of workers
if (typeof(max) === 'number' && !isNaN(max)) {
if (max < 1) {
Log.info("INSUFFICIENT_MAX_WORKERS", max);
limit = 1;
}
} else {
Log.error("INVALID_MAX_WORKERS", '[' + max + ']');
}
}
var logged;
OS.cpus().forEach(function (cpu, index) {
if (limit && index >= limit) {
if (!logged) {
logged = true;
Log.info('WORKER_LIMIT', "(Opting not to use available CPUs beyond " + index + ')');
}
return;
}
initWorker(fork(DB_PATH), w(function (err) {
if (!err) { return; }
w.abort();