diff --git a/.config/example.yml b/.config/example.yml index 05dc43c44b..b84a50c525 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -131,3 +131,6 @@ drive: # Ghost account is an account used for the purpose of delegating # followers when putting users in the list. # ghost: user-id-of-your-ghost-account + +# Clustering +# clusterLimit: 1 diff --git a/src/config/types.ts b/src/config/types.ts index a3d55e2843..f220e15822 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -92,6 +92,8 @@ export type Source = { }; google_maps_api_key: string; + + clusterLimit?: number; }; /** diff --git a/src/index.ts b/src/index.ts index 9c16c4d223..eae25762ec 100644 --- a/src/index.ts +++ b/src/index.ts @@ -66,7 +66,7 @@ async function masterMain() { Logger.succ('Misskey initialized'); - spawnWorkers(() => { + spawnWorkers(config.clusterLimit, () => { Logger.succ('All workers started'); Logger.info(`Now listening on port ${config.port} on ${config.url}`); }); @@ -137,14 +137,16 @@ async function init(): Promise { return config; } -function spawnWorkers(onComplete: Function) { +function spawnWorkers(limit: number, onComplete: Function) { // Count the machine's CPUs const cpuCount = os.cpus().length; - const progress = new ProgressBar(cpuCount, 'Starting workers'); + const count = limit || cpuCount; + + const progress = new ProgressBar(count, 'Starting workers'); // Create a worker for each CPU - for (let i = 0; i < cpuCount; i++) { + for (let i = 0; i < count; i++) { const worker = cluster.fork(); worker.on('message', message => { if (message === 'ready') {