MenuBar

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

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! 🚀

No comments:

Post a Comment

iklan

iklan