make the number of workers configurable
This commit is contained in:
parent
0465f31a45
commit
ba6faca02e
@ -89,6 +89,14 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
//httpSafePort: 3001,
|
//httpSafePort: 3001,
|
||||||
|
|
||||||
|
/* CryptPad will launch a child process for every core available
|
||||||
|
* in order to perform CPU-intensive tasks in parallel.
|
||||||
|
* Some host environments may have a very large number of cores available
|
||||||
|
* or you may want to limit how much computing power CryptPad can take.
|
||||||
|
* If so, set 'maxWorkers' to a positive integer.
|
||||||
|
*/
|
||||||
|
// maxWorkers: 4,
|
||||||
|
|
||||||
/* =====================
|
/* =====================
|
||||||
* Admin
|
* Admin
|
||||||
* ===================== */
|
* ===================== */
|
||||||
|
|||||||
@ -253,6 +253,8 @@ module.exports.create = function (config, cb) {
|
|||||||
channelExpirationMs: config.channelExpirationMs,
|
channelExpirationMs: config.channelExpirationMs,
|
||||||
verbose: config.verbose,
|
verbose: config.verbose,
|
||||||
openFileLimit: config.openFileLimit,
|
openFileLimit: config.openFileLimit,
|
||||||
|
|
||||||
|
maxWorkers: config.maxWorkers,
|
||||||
}, w(function (err) {
|
}, w(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
throw new Error(err);
|
throw new Error(err);
|
||||||
|
|||||||
@ -193,7 +193,32 @@ Workers.initialize = function (Env, config, _cb) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
nThen(function (w) {
|
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) {
|
initWorker(fork(DB_PATH), w(function (err) {
|
||||||
if (!err) { return; }
|
if (!err) { return; }
|
||||||
w.abort();
|
w.abort();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user