vertically scale bundle

This commit is contained in:
Flam3rboy
2021-10-18 17:38:31 +02:00
parent 70d0d11ffd
commit f6b00d2fcd
4 changed files with 71 additions and 37 deletions
+2 -1
View File
@@ -12,7 +12,7 @@ import { Config, initDatabase } from "@fosscord/util";
const app = express();
const server = http.createServer();
const port = Number(process.env.PORT) || 3001;
const production = false;
const production = true;
server.on("request", app);
// @ts-ignore
@@ -23,6 +23,7 @@ const cdn = new CDNServer({ server, port, production, app });
const gateway = new Gateway.Server({ server, port, production });
async function main() {
server.listen(port);
await initDatabase();
await Config.init();
// only set endpointPublic, if not already set
+41 -32
View File
@@ -1,6 +1,6 @@
// process.env.MONGOMS_DEBUG = "true";
import "reflect-metadata";
import cluster from "cluster";
import cluster, { Worker } from "cluster";
import os from "os";
import { red, bold, yellow, cyan } from "nanocolors";
import { initStats } from "./stats";
@@ -8,20 +8,21 @@ import { config } from "dotenv";
config();
import { execSync } from "child_process";
// TODO: add tcp socket event transmission
const cores = 1 || Number(process.env.threads) || os.cpus().length;
// TODO: add socket event transmission
let cores = Number(process.env.THREADS) || os.cpus().length;
function getCommitOrFail() {
try {
return execSync("git rev-parse HEAD").toString().trim();
} catch (e) {
return null;
if (cluster.isMaster) {
function getCommitOrFail() {
try {
return execSync("git rev-parse HEAD").toString().trim();
} catch (e) {
return null;
}
}
}
const commit = getCommitOrFail();
const commit = getCommitOrFail();
console.log(
bold(`
console.log(
bold(`
███████╗ ██████╗ ███████╗███████╗ ██████╗ ██████╗ ██████╗ ██████╗
██╔════╝██╔═══██╗██╔════╝██╔════╝██╔════╝██╔═══██╗██╔══██╗██╔══██╗
█████╗ ██║ ██║███████╗███████╗██║ ██║ ██║██████╔╝██║ ██║
@@ -38,32 +39,40 @@ console.log(
)}
Current commit: ${
commit !== null
? `${cyan(commit)} (${yellow(commit.slice(0, 7))})`
: "Unknown (Git cannot be found)"
}
`)
);
if (commit == null)
console.log(yellow(`Warning: Git is not installed or not in PATH.`));
if (cluster.isMaster && !process.env.masterStarted) {
process.env.masterStarted = "true";
(async () => {
initStats();
if (cores === 1) {
require("./Server");
return;
commit !== null
? `${cyan(commit)} (${yellow(commit.slice(0, 7))})`
: "Unknown (Git cannot be found)"
}
`)
);
if (commit == null) {
console.log(yellow(`Warning: Git is not installed or not in PATH.`));
}
initStats();
console.log(`[Process] starting with ${cores} threads`);
if (cores === 1) {
require("./Server");
} else {
process.env.EVENT_TRANSMISSION = "process";
// Fork workers.
for (let i = 0; i < cores; i++) {
cluster.fork();
console.log(`[Process] worker ${i} started.`);
}
cluster.on("message", (sender: Worker, message: any) => {
for (const id in cluster.workers) {
const worker = cluster.workers[id];
if (worker === sender || !worker) continue;
worker.send(message);
}
});
cluster.on("exit", (worker: any, code: any, signal: any) => {
console.log(
`[Worker] ${red(
@@ -72,7 +81,7 @@ if (cluster.isMaster && !process.env.masterStarted) {
);
cluster.fork();
});
})();
}
} else {
require("./Server");
}