한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L13 Arsitektur dan operasional server

Kegagalan berantai Cascading failure

ID penyebab in-cascade · Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur jaringan (Tim Infrastruktur)

Buka kartu interaktif dengan gambar dan simulasi →

Jika satu layanan melambat, server yang memanggilnya ikut tertahan menunggu respons, dan fitur yang tidak berhubungan pun ikut berhenti.

Mengapa Satu layanan, seperti DB atau autentikasi, melambat → Akibatnya Thread dan koneksi server pemanggil tertahan menunggu respons, dan retry dari permintaan yang gagal menambah beban → Di layar Fitur yang tampak tidak berhubungan pun ikut melambat atau berhenti

Gejala
Freeze, Input lag, Tidak bisa masuk / loading tanpa henti
Faktor
Stall
Siapa yang mengalami
Seluruh server
Kapan
Saat banyak pemain berkumpul, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur jaringan (Tim Infrastruktur)
Tugas Tim Pengembang Game
Pasang timeout di setiap pemanggilan, circuit breaker, isolasi per fitur (bulkhead), retry dengan interval yang makin panjang dan jumlah yang dibatasi, pisahkan respons health check dari pekerjaan yang berat.
Tugas Tim Infrastruktur
Beri kelonggaran pada jumlah kegagalan dan interval health check load balancer agar server yang lambat sesaat tidak langsung dikeluarkan, batasi jumlah server yang dikeluarkan sekaligus.
Di grafik
Mendatar di batas · Waktu respons dan tingkat error per layanan, jumlah thread dan koneksi yang terpakai
Yang diperiksa
Tampilkan waktu respons, tingkat error, dan jumlah retry per layanan dalam satu layar dengan sumbu waktu yang disamakan, lalu cari bagian yang paling dulu melambat. Jika di belakang load balancer, periksa waktu respons target (di AWS ALB: TargetResponseTime), jumlah 5xx dari target (HTTPCode_Target_5XX_Count), dan jumlah target yang dikeluarkan karena tidak sehat (UnHealthyHostCount)
Cocok jika
Latensi satu layanan naik lebih dulu, lalu jumlah thread dan koneksi yang terpakai di pihak pemanggil layanan itu menempel di batas, error merambat ke layanan lain, dan jumlah retry serta jumlah target yang dikeluarkan ikut naik
Tidak cocok jika
Beberapa layanan melambat bersamaan pada saat yang sama: periksa dulu gangguan pada sumber daya bersama (DB, jaringan, host)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Health check (pemeriksaan apakah server masih hidup) juga memperbesar efek berantai. Jika server yang sibuk terlambat menjawab pemeriksaan, load balancer mengeluarkan server yang sebenarnya normal, trafiknya membanjiri server yang tersisa, dan server berikutnya pun ikut terlambat.
Kasus nyata
Riot Games 2020: Host edge kelebihan beban di server League of Legends Eropa dan Brasil
Riot Games 2021: Gangguan 5 jam di League of Legends EUW: satu DB pendukung menghentikan seluruh server
Roblox 2021: Gangguan 73 jam di Roblox: perebutan sumber daya di cluster service discovery (Consul)
AWS 2021: Kongesti jaringan internal AWS us-east-1
AWS 2025: Gangguan DNS DynamoDB di AWS us-east-1 dan pemulihan yang lama

Sumber

  1. Site Reliability Engineering, Chapter 22: Addressing Cascading Failures Google
    Jika server yang kelebihan beban gagal health check dan dikeluarkan, beban menumpuk di server yang tersisa dan retry memperbesar beban; disarankan membatasi jumlah retry, exponential backoff acak, dan deadline
  2. Circuit Breaker Pattern Microsoft Azure
    Permintaan yang tertahan sampai timeout menahan thread dan koneksi DB sehingga fitur yang tidak berhubungan pun gagal; jika kegagalan menumpuk dalam waktu tertentu, pemanggilan langsung ditolak
  3. Timeouts, retries, and backoff with jitter AWS
    Amazon Builders' Library. Pada rantai pemanggilan 5 tingkat, jika setiap tingkat melakukan retry 3 kali, beban DB menjadi 243 kali lipat; lakukan retry di satu tempat saja dan batasi dengan token bucket
  4. CloudWatch metrics for your Application Load Balancer AWS
    TargetResponseTime (waktu sejak permintaan meninggalkan load balancer sampai target mulai merespons), HTTPCode_Target_5XX_Count (jumlah 5xx yang dihasilkan target), UnHealthyHostCount (jumlah target yang tidak sehat)

Lihat juga

Lapisan yang sama: L13 Arsitektur dan operasional server

Penyebab di lapisan lain dengan gejala yang sama (Freeze)

Lihat kartu interaktif dengan gambar dan simulasi