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 requestapp.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, () => {});
Langkah 2: Jalankan Server dan Lihat Output
node server.jsKemudian akses beberapa endpoint, misalnya http://localhost:. 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 clinicLangkah 2: Jalankan Profiling dengan Clinic.js
clinic doctor -- node server.jsLalu 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
- Gunakan Performance Hooks untuk analisis cepat.
- Gunakan Clinic.js untuk laporan lebih mendalam.
- 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