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

Buku Putih Lag Game › L13 Arsitektur dan operasional server

Deploy dan restart Deploy / rolling restart

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

Buka kartu interaktif dengan gambar dan simulasi →

Jika koneksi tidak dipindahkan saat server dimulai ulang untuk update, pemain di server itu disconnect, lalu penyimpanan data menjelang shutdown dan reconnect membanjir sekaligus.

Mengapa Server dimulai ulang satu per satu untuk deploy hotfix → Akibatnya Server dimatikan tanpa memindahkan koneksi ke server lain, penyimpanan data semua pemain di server itu membanjiri DB → Di layar Disconnect tanpa pengumuman, lonjakan reconnect

Gejala
Disconnect, Tidak bisa masuk / loading tanpa henti, Input lag
Faktor
Stall
Siapa yang mengalami
Seluruh server, Lokasi/channel tertentu
Kapan
Sesekali secara acak, Tepat setelah login atau maintenance
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur)
Tugas Tim Pengembang Game
Sediakan fitur drain (blokir koneksi baru saja dan tunggu sampai pemain yang ada keluar), pindahkan karakter ke server lain, cicil penyimpanan sebelum shutdown, umumkan status siap setelah pemuatan cache dan JIT warm-up selesai sesudah restart, untuk hot reload baca data lebih dulu di thread terpisah lalu ganti sekaligus di antara tick.
Tugas Tim Infrastruktur
Buat tools deploy menunggu drain selesai per server sebelum restart, biarkan server yang baru dimulai ulang menerima trafik setelah status siap (pemanasan selesai) dipastikan, umumkan jadwal deploy.
Kisaran angka
Jika satu server menampung 5.000 pemain, 5.000 penyimpanan membanjiri DB dalam beberapa detik menjelang shutdown.
Di grafik
Koneksi putus serentak · Jumlah koneksi per server, jumlah penulisan DB
Yang diperiksa
Tumpangkan catatan kerja tools deploy (waktu restart per server) sebagai garis vertikal (anotasi) di grafik jumlah koneksi, jumlah disconnect, penulisan DB, dan permintaan login
Cocok jika
Jumlah koneksi per server anjlok satu per satu secara berurutan pada waktu restart, dengan penulisan DB melonjak tepat sebelumnya dan permintaan login melonjak tepat sesudahnya
Tidak cocok jika
Waktu putusnya koneksi tidak bertepatan dengan catatan deploy atau restart: lebih mungkin crash server atau perangkat jaringan
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Beberapa menit setelah dinyalakan ulang pun server masih lambat. Cache kosong sehingga query DB membanjir, dan server Java atau C# belum selesai mengoptimalkan kode selama berjalan (JIT warm-up), sehingga pekerjaan yang sama butuh waktu lebih lama. Cara membaca ulang script dan tabel data tanpa mematikan server (hot reload) juga membuat tick berhenti selama pembacaan sehingga terjadi jeda singkat.

Sumber

  1. Site Reliability Engineering, Chapter 20: Load Balancing in the Datacenter Google
    Server yang menerima SIGTERM masuk status lame duck, mengalihkan permintaan baru ke server lain, dan hanya menyelesaikan permintaan yang sedang berjalan; beberapa menit setelah restart kode belum dioptimalkan JIT sehingga butuh lebih banyak sumber daya, jadi server baru menerima trafik setelah pemanasan
  2. Liveness, Readiness, and Startup Probes Kubernetes
    Readiness probe menahan trafik sampai pembuatan koneksi, pemuatan file, dan pemanasan cache selesai
  3. Edit target group attributes for your Network Load Balancer AWS
    Jika pendaftaran target dicabut, koneksi baru tidak lagi dikirim ke target itu dan koneksi yang ada dibiarkan selesai (drain, default 300 detik)

Lihat juga

Lapisan yang sama: L13 Arsitektur dan operasional server

Penyebab di lapisan lain dengan gejala yang sama (Disconnect)

Lihat kartu interaktif dengan gambar dan simulasi