[Server] Refactor
This commit is contained in:
parent
1d62a17c3c
commit
5cf067c814
1 changed files with 27 additions and 26 deletions
53
src/index.ts
53
src/index.ts
|
@ -10,6 +10,7 @@ Error.stackTraceLimit = Infinity;
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as cluster from 'cluster';
|
import * as cluster from 'cluster';
|
||||||
|
import * as debug from 'debug';
|
||||||
import Logger from './utils/logger';
|
import Logger from './utils/logger';
|
||||||
import * as chalk from 'chalk';
|
import * as chalk from 'chalk';
|
||||||
import portUsed = require('tcp-port-used');
|
import portUsed = require('tcp-port-used');
|
||||||
|
@ -23,6 +24,8 @@ import DependencyInfo from './utils/dependencyInfo';
|
||||||
import { path as configPath } from './config';
|
import { path as configPath } from './config';
|
||||||
import loadConfig from './config';
|
import loadConfig from './config';
|
||||||
|
|
||||||
|
const clusterLog = debug('misskey:cluster');
|
||||||
|
|
||||||
// Init babel
|
// Init babel
|
||||||
require('babel-core/register');
|
require('babel-core/register');
|
||||||
require('babel-polyfill');
|
require('babel-polyfill');
|
||||||
|
@ -41,7 +44,7 @@ main();
|
||||||
/**
|
/**
|
||||||
* Init proccess
|
* Init proccess
|
||||||
*/
|
*/
|
||||||
function main(): void {
|
function main() {
|
||||||
if (cluster.isMaster) {
|
if (cluster.isMaster) {
|
||||||
masterMain();
|
masterMain();
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,7 +55,7 @@ function main(): void {
|
||||||
/**
|
/**
|
||||||
* Init master proccess
|
* Init master proccess
|
||||||
*/
|
*/
|
||||||
async function masterMain(): Promise<void> {
|
async function masterMain() {
|
||||||
let initResult: InitResult;
|
let initResult: InitResult;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -76,35 +79,15 @@ async function masterMain(): Promise<void> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const config = loadConfig();
|
|
||||||
|
|
||||||
spawnWorkers(() => {
|
spawnWorkers(() => {
|
||||||
Logger.info(chalk.bold.green(`Now listening on port ${config.port}`));
|
Logger.info(chalk.bold.green(`Now listening on port ${loadConfig().port}`));
|
||||||
|
|
||||||
// Listen new workers
|
|
||||||
cluster.on('fork', worker => {
|
|
||||||
console.log(`Process forked: [${worker.id}]`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Listen online workers
|
|
||||||
cluster.on('online', worker => {
|
|
||||||
console.log(`Process is now online: [${worker.id}]`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Listen for dying workers
|
|
||||||
cluster.on('exit', worker => {
|
|
||||||
// Replace the dead worker,
|
|
||||||
// we're not sentimental
|
|
||||||
console.log(chalk.red(`[${worker.id}] died :(`));
|
|
||||||
cluster.fork();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init worker proccess
|
* Init worker proccess
|
||||||
*/
|
*/
|
||||||
function workerMain(): void {
|
function workerMain() {
|
||||||
// start server
|
// start server
|
||||||
require('./server');
|
require('./server');
|
||||||
}
|
}
|
||||||
|
@ -112,7 +95,7 @@ function workerMain(): void {
|
||||||
/**
|
/**
|
||||||
* Init app
|
* Init app
|
||||||
*/
|
*/
|
||||||
async function init(): Promise<InitResult> {
|
async function init() {
|
||||||
let warn = false;
|
let warn = false;
|
||||||
|
|
||||||
Logger.info('Welcome to Misskey!');
|
Logger.info('Welcome to Misskey!');
|
||||||
|
@ -160,7 +143,7 @@ async function init(): Promise<InitResult> {
|
||||||
return warn ? InitResult.Warn : InitResult.Success;
|
return warn ? InitResult.Warn : InitResult.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
function spawnWorkers(onComplete: any): void {
|
function spawnWorkers(onComplete: any) {
|
||||||
// Count the machine's CPUs
|
// Count the machine's CPUs
|
||||||
const cpuCount = os.cpus().length;
|
const cpuCount = os.cpus().length;
|
||||||
|
|
||||||
|
@ -182,6 +165,24 @@ function spawnWorkers(onComplete: any): void {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Listen new workers
|
||||||
|
cluster.on('fork', worker => {
|
||||||
|
clusterLog(`Process forked: [${worker.id}]`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Listen online workers
|
||||||
|
cluster.on('online', worker => {
|
||||||
|
clusterLog(`Process is now online: [${worker.id}]`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Listen for dying workers
|
||||||
|
cluster.on('exit', worker => {
|
||||||
|
// Replace the dead worker,
|
||||||
|
// we're not sentimental
|
||||||
|
clusterLog(chalk.red(`[${worker.id}] died :(`));
|
||||||
|
cluster.fork();
|
||||||
|
});
|
||||||
|
|
||||||
// Display detail of unhandled promise rejection
|
// Display detail of unhandled promise rejection
|
||||||
process.on('unhandledRejection', console.dir);
|
process.on('unhandledRejection', console.dir);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue