Agik Setiawan - November 16, 2022

Membuat Multi Thread atau Cluster mode pada nest JS (10x lebih cepat)

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.

Share


Comments