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

Buku Putih Lag Game › L9 Proses game di server

Pemanggilan sinkron di thread game Synchronous DB / file I/O on the game loop

ID penyebab sp-sync-call · Penanggung jawab utama Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika di tengah tick server menunggu respons DB atau penulisan file, seluruh jalannya game di server berhenti selama waktu itu.

Mengapa Di dalam tick, server menunggu query dan penyimpanan DB, penulisan log, atau pemanggilan API eksternal → Akibatnya Jika DB butuh 100 ms, tick juga berhenti 100 ms → Di layar Setiap kali DB atau disk melambat, seluruh field tersendat sesaat

Gejala
Freeze, Patah-patah
Faktor
Stall
Siapa yang mengalami
Lokasi/channel tertentu, Seluruh server
Kapan
Saat melakukan aksi tertentu, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Alihkan semua pekerjaan lambat (query dan penyimpanan DB, penulisan log, pemanggilan API eksternal) ke pemrosesan asinkron dan terapkan hasilnya di tick berikutnya (jika hanya memasang timeout, server tetap berhenti selama menunggu).
Kisaran angka
Pulang-pergi ke DB di data center yang sama hanya 0,5 ms, tetapi jika dipanggil 100 kali dalam satu tick, totalnya 50 ms. Itu saja sudah menghabiskan seluruh budget server 20 tick.
Di grafik
Melonjak acak sesekali · Waktu tick server, latensi query DB
Yang diperiksa
Tampilkan grafik waktu tick bersama latensi query DB (slow query log dan sebagainya) dan latensi disk pada sumbu waktu yang sama. Jika tidak ada metrik tick, periksa di mana thread game menunggu dengan bcc offcputime -p
Cocok jika
Waktu lonjakan tick bertepatan dengan waktu lonjakan latensi DB atau file, dan waktu tunggu thread game terkumpul di call stack penerimaan respons DB atau penulisan file
Tidak cocok jika
Latensi DB dan disk tenang tetapi tick melonjak: lebih mungkin jeda GC atau perebutan lock
Sarana pemeriksaan
Log dan metrik server atau klien game

Sumber

  1. Designs, Lessons and Advice from Building Large Distributed Systems Google
    Keynote LADIS 2009 (Jeff Dean). Pulang-pergi di dalam data center yang sama sekitar 0,5 ms (500.000 ns)
  2. ASP.NET Core Best Practices Microsoft
    Akses data, I/O, dan pekerjaan yang lama dipanggil secara asinkron; pemanggilan blocking yang sinkron menyebabkan thread pool habis dan respons terlambat
  3. Demonstrations of offcputime, the Linux eBPF/bcc version IO Visor
    Menjumlahkan waktu thread berhenti dan meninggalkan CPU (off-CPU) per call stack, -p untuk menentukan proses

Lihat juga

Lapisan yang sama: L9 Proses game di server

Penyebab di lapisan lain dengan gejala yang sama (Freeze)

Lihat kartu interaktif dengan gambar dan simulasi