Menu Bar

Kata Mutiara

"Keberhasilan merupakan tetesan dari jeri-payah perjuangan, luka, pengorbanan dan hal-hal yang mengejutkan. Kegagalan merupakan tetesan dari kemalasan, kebekuan, kelemahan, kehinaan dan kerendahan"

ANIMASI TULISAN BERJALAN

Showing posts with label JavaScript. Show all posts
Showing posts with label JavaScript. Show all posts

Wednesday, February 26, 2025

Mengatasi Express.js Boros CPU & RAM: Penyebab dan Solusi!🚀

 Berikut cara melakukan profiling Express.js menggunakan Node.js Performance Hooks dan clinic.js untuk mengetahui penyebab penggunaan CPU dan RAM yang tinggi.


1. Profiling dengan Node.js Performance Hooks

Node.js menyediakan modul perf_hooks untuk mengukur waktu eksekusi fungsi dan request.

Langkah 1: Tambahkan Performance Hooks di Express.js

Buat middleware untuk mengukur waktu eksekusi setiap request.

const express = require("express");
const { performance, PerformanceObserver } = require("perf_hooks");

const app = express();
const port = 3000;

// Middleware untuk mengukur waktu request
app.use((req, res, next) => {
    const start = performance.now();
    res.on("finish", () => {
        const duration = performance.now() - start;
        console.log(`Request ${req.method} ${req.url} selesai dalam ${duration.toFixed(2)} ms`);
    });
    next();
});

app.get("/", (req, res) => {
    res.send("Hello World!");
});

app.listen(port, () => {
    console.log(`Server berjalan di http://localhost:${port}`);
});

Langkah 2: Jalankan Server dan Lihat Output

node server.js

Kemudian akses beberapa endpoint, misalnya http://localhost:3000/. Console akan menampilkan durasi eksekusi setiap request.


2. Profiling dengan Clinic.js

clinic.js adalah alat yang lebih kuat untuk menganalisis CPU, RAM, dan event loop.

Langkah 1: Install clinic.js

npm install -g clinic

Langkah 2: Jalankan Profiling dengan Clinic.js

clinic doctor -- node server.js

Lalu akses beberapa endpoint dan tekan Ctrl + C untuk menghentikan proses. Clinic.js akan membuat laporan HTML yang bisa dibuka di browser.

Langkah 3: Analisis Hasil

Buka laporan yang dibuat Clinic.js untuk melihat:

  • Memory Leak → jika penggunaan RAM terus naik tanpa turun.
  • Event Loop Blocking → jika ada proses yang menghambat performa.
  • CPU Usage → jika terlalu tinggi karena proses berat.

Kesimpulan

  1. Gunakan Performance Hooks untuk analisis cepat.
  2. Gunakan Clinic.js untuk laporan lebih mendalam.
  3. Optimasi berdasarkan hasil profiling, misalnya:
    • Kurangi query database yang berat.
    • Gunakan caching (Redis).
    • Optimalkan middleware yang tidak perlu.
    • Gunakan PM2 cluster mode untuk load balancing.

Coba jalankan profiling di proyekmu dan kasih tahu hasilnya, biar kita bisa optimasi lebih lanjut! 🚀

iklan

iklan