Topik wawancara representatif

Bagaimana cara menggunakan Hukum Little untuk konkurensi layanan dan kapasitas antrean?

UmumSedang
Tim Redaksi Offer.ccDipublikasikan Diperbarui

Pertanyaan

Sebuah API rata-rata menangani 200 req/s dan latensi end-to-end 150 ms. Perkirakan jumlah rata-rata permintaan dalam sistem, lalu jelaskan bagaimana rumus tersebut membantu menetapkan batas konkurensi, mendeteksi penumpukan (backlog), dan memvalidasi kapasitas.

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

text
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_latency

Ukur 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, λ, dan W untuk 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.

Sumber publik

Pertanyaan terkait