Membuat Multi Thread atau Cluster mode pada nest JS (10x lebih cepat)
, 2 min read
Node JS / Nest JS memiliki cara kerja Single Thread yang artinya hanya bisa menjalankan tugas satu persatu sehingga pada saat ada banyak tugas yang sedang di kerjakan harus bergantian beda dengan Multi Thread yang bisa menjalankan tugas secara bersamaan.
Node JS / Nest JS memiliki cara kerja Single Thread yang artinya hanya bisa menjalankan tugas satu persatu sehingga pada saat ada banyak tugas yang sedang di kerjakan harus bergantian beda dengan Multi Thread yang bisa menjalankan tugas secara bersamaan.
Kali ini kita akan membuat supaya aplikasi Nest JS menjadi lebih cepat dengan memaksimalkan Jumlah Core yang ada pada Komputer sehingga bekerja seperti Multi Thread atau Mode Cluster. semakin banyak jumlah Core pada komputer maka akan semakin banyak jumlah tugas yang bisa di kerjakan.
Kita hanya perlu menambahkan beberapa baris code di dalam main.ts seperti berikut:
import { NestFactory } from "@nestjs/core"
import { AppModule } from "./app.module"
const cluster = require("cluster")
const numCPUs = require("os").cpus().length
async function bootstrap() {
const app = await NestFactory.create(AppModule)
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`)
for (let i = 0; i < numCPUs; i++) {
cluster.fork()
}
cluster.on("exit", (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`)
})
} else {
await app.listen(process.env.PORT || 3000)
console.log(`Worker ${process.pid} started`)
}
}
bootstrap()
benchmark Perbandingan Tanpa \ Menggunakan Cluster Mode
Pada gambar diatas disebelah kiri adalah dimana Nest JS tanpa menggunakan Cluster Mode dan di sebelah kanan adalah menggunakan Cluster Mode.
Tanpa Cluster Mode
179051 Request
Menggunakan Cluster Mode
814932 Request
Terlihat diatas perbedaanya cukup jauh dalam jumlah request dimana saya menggunakan WRK untuk mengetes request.
Tags