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

Buku Putih Lag Game › L9 Proses game di server

Infinite loop dan logika lepas kendali Infinite loop / runaway logic

ID penyebab sp-infinite-loop · Penanggung jawab utama Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika satu tick tidak pernah selesai karena bug, server berhenti, lalu watchdog memulai ulang server secara paksa.

Mengapa Perulangan tidak pernah selesai karena kondisi yang salah, atau rekursi lepas kendali → Akibatnya Tick tidak selesai sehingga server berhenti → Di layar Game freeze, lalu semua pemain disconnect

Gejala
Freeze, Disconnect
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
Batasi jumlah perulangan, pasang watchdog, buat tes yang mereproduksi input bermasalah.
Di grafik
Koneksi putus serentak · Jumlah koneksi, CPU per thread
Yang diperiksa
Selama server berhenti, periksa CPU per thread dengan pidstat -t 1, lalu cek di fungsi mana thread yang berputar 100% itu berjalan dengan perf top -t (ID thread) atau gdb. Jika server sudah dimulai ulang, periksa catatan timeout watchdog (WatchdogSec di systemd, liveness probe Kubernetes yang gagal)
Cocok jika
Selama server berhenti, satu thread game menempel di CPU 100%, dan stack-nya terus berputar di dalam fungsi atau perulangan yang sama
Tidak cocok jika
Selama server berhenti CPU mendekati 0: lebih mungkin deadlock atau menunggu respons eksternal
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)

Sumber

  1. systemd.service(5) — Linux manual page systemd
    WatchdogSec=: jika service tidak mengirim sinyal hidup (WATCHDOG=1) dalam waktu yang ditentukan, service dianggap gagal lalu dihentikan, dan dimulai ulang otomatis sesuai pengaturan Restart=
  2. Liveness, Readiness, and Startup Probes Kubernetes
    Kondisi proses masih berjalan tetapi tidak bisa maju dideteksi oleh liveness probe lalu dimulai ulang; secara default, pemeriksaan dilakukan setiap 10 detik dan restart terjadi setelah 3 kali gagal berturut-turut
  3. pidstat(1) — Linux manual page sysstat
    -t menampilkan sekaligus statistik per thread milik proses (utilisasi CPU dan lainnya)
  4. perf-top(1) — Linux manual page perf
    Menampilkan porsi pemakaian CPU per fungsi (simbol) secara real-time untuk thread (-t) atau proses (-p) yang sedang berjalan

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