1. Pertanyaan
Layanan pemrosesan pesanan asinkron melambat saat lalu lintas puncak. Pemantauan menunjukkan throughput yang stabil mendekati 200 req/s dan latensi rata-rata end-to-end mendekati 150 ms. Gunakan Hukum Little untuk memperkirakan permintaan yang sedang berjalan (in-flight), jelaskan hubungan antara latensi, throughput, dan antrean, serta usulkan tindakan rekayasa yang mencegah backlog tidak stabil.
2. Batasan dan klarifikasi
- Hukum Little menggambarkan rata-rata jangka panjang untuk sistem yang stabil:
L = λW, di mana L adalah rata-rata pekerjaan dalam sistem, λ adalah rata-rata throughput, dan W adalah rata-rata waktu dalam sistem. - Nyatakan jendela pengukuran, batas permintaan, dan unit satuan; lonjakan singkat atau sistem yang tidak stabil tidak dapat diperlakukan sebagai rata-rata jangka panjang.
- Pisahkan waktu layanan, waktu antrean, dan waktu tinggal (residence time) end-to-end, jika tidak, ukuran konkurensi dan thread-pool akan diremehkan (understated).
- Klarifikasi batas kapasitas, kebijakan batas waktu (timeout), prioritas, dan pekerjaan yang boleh dihentikan/dibuang (dropped).
3. Penurunan inti
Mengalikan 200 req/s dengan 0.15 s menghasilkan rata-rata L = 30 permintaan di dalam sistem. Ini bukan batas maksimum 30 permintaan dan bukan konkurensi p99; ini adalah inventaris rata-rata untuk jendela waktu tersebut. Jika throughput tetap konstan sementara waktu tinggal rata-rata berlipat ganda, pekerjaan in-flight rata-rata juga berlipat ganda, yang biasanya mengindikasikan antrean yang membesar atau dependensi yang lebih lambat.
4. Analisis referensi
lambda = 200 # requests / second
W = 0.150 # seconds / request
L = lambda * W # 30 requests in the system on average
if arrival_rate > sustainable_service_rate:
queue grows without a stable bound
apply_admission_control_or_scale_out()
capacity = concurrency_limit / target_latencyUkur saat pekerjaan memasuki antrean, mulai diproses, dan selesai. Hukum Little dapat memperkirakan batas atas kapasitas kasar: dengan batas konkurensi 100 dan target waktu tinggal rata-rata 200 ms, throughput yang stabil adalah sekitar 500 req/s. Berikan ruang cadangan (headroom) untuk tail latency, lonjakan (bursts), dan jitter dependensi.
5. Kasus kelebihan beban dan trade-off
Ketika tingkat kedatangan tetap di atas tingkat layanan, antrean bertambah, W meningkat, dan L meningkat, menciptakan loop umpan balik dari timeout dan percobaan ulang (retries). Antrean tanpa batas (unbounded) hanya menunda kegagalan; pekerjaan mungkin tidak berguna lagi ketika akhirnya selesai. Gunakan bounded queues, perilaku fail-fast, prioritas, pembuangan beban (load shedding), tekanan balik (backpressure), atau scale-out. Setiap kebijakan harus menyatakan pekerjaan apa yang dibuang dan bagaimana pemanggil diberi tahu.
6. Verifikasi dan observabilitas
- Catat tingkat kedatangan, tingkat penyelesaian, pekerjaan in-flight, serta latensi rata-rata plus p95/p99 berdasarkan jendela waktu.
- Lakukan pengecekan silang terhadap tiga pengukuran independen dari
L,λ, danWuntuk menangkap kesalahan unit atau batas pengambilan sampel. - Jalankan uji beban terkontrol yang meningkatkan tingkat kedatangan secara bertahap dan amati panjang antrean, tingkat timeout, dan waktu pemulihan.
- Buat peringatan pada kedalaman antrean, usia antrean, konkurensi, tingkat penolakan, dan percobaan ulang; verifikasi seberapa cepat metrik tersebut turun setelah penskalaan atau shedding load.
7. Kesalahan umum
- Memperlakukan rata-rata L sebagai batas konkurensi mutlak dan mengabaikan lonjakan, tail latency, dan distribusi antrean.
- Menggunakan waktu layanan alih-alih W end-to-end sehingga mengabaikan waktu tunggu jaringan, lock, dan dependensi.
- Menyimpulkan kapasitas jangka panjang dari sampel singkat sebelum sistem stabil.
- Menskalakan konsumen tanpa membatasi produsen, sehingga dependensi bersama atau antrean hilir (downstream) tetap kelebihan beban.
8. Poin penilaian wawancara
Mensubstitusikan ke dalam rumus dengan benar
Kandidat menjaga konsistensi unit, menghitung 200 × 0.15 = 30, dan menjelaskan bahwa ini adalah rata-rata pekerjaan in-flight, bukan batas maksimum.
Mendefinisikan batas waktu
Kandidat memisahkan waktu antrean, layanan, dan end-to-end serta menyatakan jendela pengambilan sampel dan asumsi stabilitas.
Mengenali umpan balik kelebihan beban
Kandidat menjelaskan bagaimana tingkat kedatangan di atas tingkat layanan memperbesar antrean, latensi, percobaan ulang, dan konkurensi, lalu mengusulkan kontrol berbatas (bounded).
Memvalidasi kapasitas dengan data
Kandidat menggunakan uji beban, p95/p99, usia antrean, tingkat penolakan, dan waktu pemulihan alih-alih hanya melaporkan satu angka rata-rata.