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
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
Site Reliability Engineering, Chapter 20: Load Balancing in the DatacenterGoogle 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