| const http = require("http"); | |
| const fs = require("fs"); | |
| const WebSocket = require("ws"); | |
| const cluster = require("cluster"); | |
| const os = require("os"); | |
| const cpus = os.cpus().length; | |
| const port = 7860; | |
| const index = fs.readFileSync("./index.html"); | |
| if (cluster.isMaster) { | |
| console.log(`Number of CPUs is ${cpus}`); | |
| console.log(`Master ${process.pid} is running`); | |
| let requests = 0; | |
| let childs = []; | |
| for (let i = 0; i < cpus; i++) { | |
| let child = cluster.fork(); | |
| child.on("message", (msg) => { | |
| requests++; | |
| }); | |
| childs.push(child); | |
| } | |
| setInterval(() => { | |
| for (let child of childs) { | |
| child.send(requests); | |
| } | |
| requests = 0; | |
| }, 1000); | |
| } else { | |
| console.log(`Worker ${process.pid} started`); | |
| const handler = function (req, res) { | |
| if (req.url == "/dstat") { | |
| process.send(0); | |
| res.end(); | |
| } else { | |
| res.end(index); | |
| } | |
| }; |