UNDER PRESSURE

Level 0 · Membaca Tekanan

Sesi 3: Antrean Tidak Pernah Bohong

Sesi 3 / 343 menit baca

1. Bayangkan jika

Bayangkan kamu mengelola sebuah klinik kecil dengan satu dokter umum.
Pasien datang rata-rata 1 orang setiap 10 menit (\lambda = 6 pasien/jam).
Dokter memeriksa 1 pasien dalam 8 menit (T_s = 8 menit \rightarrow \mu = 7.5 pasien/jam).

Pertanyaannya sederhana: berapa lama pasien menunggu di ruang tunggu?


2. Apa yang sebenarnya terjadi

Kita hitung Utilisasi (U):

U = \frac{\lambda}{\mu} = \frac{6}{7.5} = 0.8 = 80\%

Dengan formula Waktu Respons Rata-rata (T_r) untuk sistem M/M/1:

T_r = \frac{T_s}{1 - U} = \frac{8}{1 - 0.8} = \frac{8}{0.2} = 40 \text{ menit}

Waktu melayani: 8 menit.
Waktu total di sistem: 40 menit.
Waktu menunggu (antrean): 32 menit.

80% utilisasi \rightarrow pelanggan menghabiskan 80% waktu mereka hanya menunggu.


3. Bagaimana jika kita coba naikkan beban?

Misal kedatangan naik jadi 1 pasien tiap 9 menit (\lambda = 6.67, U = 89\%).

T_r = \frac{8}{1 - 0.89} = \frac{8}{0.11} \approx 73 \text{ menit}

Utilisasi naik 9 poin (80% → 89%), tapi waktu respons hampir dua kali lipat (40 → 73 menit).

Ini kurva eksponensial antrean. Semakin dekat ke 100%, kurva menembus ke atas tak terbatas.


4. Nama resminya

Istilah Definisi
Utilisasi (U) Porsi waktu server sibuk (U = \lambda / \mu).
Saturation Titik U \approx 100\%; antrean tak terbatas.
Queue Depth (L) Rata-rata jumlah request di sistem (antre + diproses).
Hukum Little (L = \lambda W) L = throughput \times waktu di sistem. Berlaku universal.
Knee Point Utilisasi di mana latency mulai melonjak tajam (biasanya 70–80%).
Buckle Point Titik throughput puncak sebelum thrash / collapse.

5. Di dunia kita (Software)

Klinik Software
Dokter CPU / Worker Thread / DB Connection
Pasien Request / Query / Transaksi
Ruang tunggu Socket Queue / Thread Pool Queue / Connection Pool Queue
Waktu periksa Service Time (T_s)
Waktu total pasien Response Time (R)

Contoh nyata:
DB Connection Pool = 100 koneksi (server).
Service Time query = 5 ms.
Throughput target = 15.000 req/s \rightarrow butuh 75 koneksi simultan (Little's Law).

Kalau traffic spike naik jadi 20.000 req/s \rightarrow butuh 100 koneksi (100% utilisasi).
Antrean meledak. Latency naik dari 5 ms → ratusan ms → timeout.


6. Lensa Performance Tester

  1. Jangan percaya rata-rata. Cari Knee Point via step-load test (naikkan beban bertahap, catat latency p95/p99).
  2. Target utilisasi aman: 60–70% untuk sistem interactive (API, web). 80%+ hanya untuk batch/throughput-oriented.
  3. Hukum Little adalah alat diagnostik:
    L = \lambda \times R \rightarrow kalau R naik tapi \lambda stagnan, artinya L (antrean) membengkak.
  4. Saturation ≠ Error. Sistem bisa healthy (HTTP 200) tapi unresponsive (latency 10× normal).

7. Pertanyaan untuk ronde berikutnya

Sesi 4: "Tiga Angka yang Sering Tertukar"
Kenapa tim sering bingung membedakan Concurrency, Throughput, dan Response Time?
Dan bagaimana Little's Law (N = X \times R) mengikat ketiganya jadi satu kesatuan yang tidak bisa dipisah?