Buku Putih Lag Game › Cari berdasarkan gejala
Freeze: 67 penyebab dan penanggung jawabnya
Disebut juga: membeku, hang, tidak merespons
Buka kamus gejala interaktif dengan gambar →
Semua yang ada di layar berhenti sejenak (0,5 detik hingga beberapa detik), lalu bergerak lagi.
Semua diam. Hanya karakter Anda yang sedikit bergerak karena prediksi, atau berlari di tempat. Begitu pulih, gerakan yang tertunda menyusul sekaligus sebagai fast forward atau teleport.
Seluruh server berhenti (GC, deadlock, pemanggilan sinkron), koneksi putus sesaat, atau PC Anda yang berhenti.
Penyebab gejala ini
L1 Proses game di klien
- Lonjakan frame time: Perhitungan satu frame memakan waktu beberapa kali lebih lama dari biasanya sehingga layar berhenti sejenak. (Pengembangan klien (Tim Pengembang Game))
- Garbage collection di klien: Selama memori bekas pakai (garbage) dikumpulkan kembali, seluruh game berhenti. Cirinya adalah patah-patah dengan interval yang teratur. (Pengembangan klien (Tim Pengembang Game))
- Pemuatan sinkron dan kompilasi shader di main thread: Game berhenti karena harus membaca file dan membuat shader tepat sebelum menggambar area, monster, atau efek yang baru pertama kali muncul. (Pengembangan klien (Tim Pengembang Game))
- Streaming aset tertinggal akibat storage lambat: Pada storage lambat seperti HDD, kecepatan membaca tekstur dan model di open world tidak bisa mengimbangi gerakan pemain, sehingga objek terlambat muncul atau game patah-patah karena menunggu pembacaan selesai. (Pengembangan klien (Tim Pengembang Game))
- Pemindaian oleh modul keamanan game (anti-cheat): Modul keamanan yang berjalan bersama game untuk mencegah cheat melakukan pemeriksaan secara berkala. Jika pemeriksaannya berat atau heartbeat (sinyal berkala yang menandakan klien masih hidup) ke server keamanan terlambat, game menjadi patah-patah atau disconnect. (Pengembangan klien (Tim Pengembang Game))
L2 OS dan perangkat klien
- Perpindahan Wi-Fi ↔ LTE/5G: Saat Anda keluar rumah, Wi-Fi terputus dan beralih ke LTE/5G sehingga alamat IP Anda berubah dan koneksi yang ada menjadi tidak berlaku. (Pengembangan server (Tim Pengembang Game))
- Kekurangan memori dan swap di klien: Jika puluhan tab browser dan game menyala bersamaan, OS memindahkan sebagian memori game ke disk. (Pihak Eksternal (Pihak Eksternal))
- Kekurangan memori grafis (VRAM): Jika memori yang dibutuhkan opsi grafis lebih besar dari memori kartu grafis, OS memindahkan tekstur ke memori PC lalu mengambilnya kembali sehingga game patah-patah. (Pengembangan klien (Tim Pengembang Game))
- Mode hemat daya NIC dan masalah driver: Jika kartu LAN atau chip Wi-Fi masuk ke mode hemat daya di antara paket, butuh waktu untuk aktif kembali. (Pihak Eksternal (Pihak Eksternal))
- Interferensi program overlay: Program messenger, launcher, perekam, dan penampil FPS menyusup ke proses rendering game (hooking) untuk menggambar UI mereka di atas layar game. Pekerjaan setiap frame bertambah, dan sesekali program itu bentrok dengan game sehingga game tersendat sesaat atau tertutup paksa. (Pihak Eksternal (Pihak Eksternal))
L3 Jaringan rumah
- Handover antar-BTS (saat bergerak): Saat bepergian dengan bus atau kereta bawah tanah, komunikasi terputus selama BTS berganti. (Pihak Eksternal (Pihak Eksternal))
- Perpindahan 5G↔LTE yang sering (di tepi jangkauan 5G): Di dalam gedung dengan sinyal 5G lemah atau di tepi jangkauan 5G, ponsel sering berpindah antara 5G dan LTE, dan setiap kali berpindah ping melonjak atau komunikasi terputus sejenak. (Pihak Eksternal (Pihak Eksternal))
L4 Jalur internet
- Perubahan rute dan konvergensi BGP: Saat informasi rute internet berubah, paket hilang selama beberapa detik hingga puluhan detik (dalam kasus yang jarang, sampai beberapa menit) sampai rute kembali konvergen. (Infrastruktur jaringan (Tim Infrastruktur))
- Kualitas koneksi buruk: Konektor yang kontaknya buruk, kabel yang sudah tua, atau modem yang bermasalah menimbulkan packet loss terus-menerus dan koneksi yang putus secara berkala. (Pihak Eksternal (Pihak Eksternal))
L5 Perangkat jaringan data center
- Failover perangkat jaringan: Saat satu router atau firewall rusak dan dialihkan ke perangkat cadangan (failover), semua pemain mengalami freeze selama beberapa detik. (Infrastruktur jaringan (Tim Infrastruktur))
- MTU tidak cocok (hanya paket besar yang hilang): Jika MTU (ukuran yang bisa dikirim sekaligus) di segmen tengah mengecil tetapi notifikasi ukuran terlampaui diblokir, hanya paket besar yang terus hilang. (Infrastruktur jaringan (Tim Infrastruktur))
L6 Kartu jaringan server
- Maintenance host cloud dan live migration: Saat penyedia cloud melakukan maintenance pada server fisik (host), virtual machine dipindahkan ke host lain (live migration) atau dihentikan sementara. Selama itu seluruh server terhenti, dan jika jedanya lama, koneksi terputus. (Infrastruktur server (Tim Infrastruktur))
- Masalah driver dan firmware NIC: Selama kartu berhenti dan dimulai ulang karena bug driver atau fitur yang tidak berfungsi dengan benar, semua pengiriman dan penerimaan terputus. (Infrastruktur server (Tim Infrastruktur))
L7 OS server (kernel)
- CPU steal (virtual machine): Server game berhenti selama server fisik (hypervisor) sementara memberikan waktu CPU milik virtual machine ini ke virtual machine lain (CPU steal). (Infrastruktur server (Tim Infrastruktur))
- Jeda akibat reclaim dan compaction memori: Proses berhenti selama OS memadatkan memori (compaction) untuk membuat halaman besar (huge page) atau mengambil kembali memori (reclaim) agar tersedia ruang kosong. (Infrastruktur server (Tim Infrastruktur))
L8 Socket dan protokol
- HOL blocking pada TCP: Untuk menjaga urutan, TCP tidak menyerahkan paket yang datang belakangan ke game sampai satu paket yang hilang diterima ulang. (Pengembangan server (Tim Pengembang Game))
- RTO TCP dan exponential backoff: Setiap kali retransmisi gagal lagi, waktu tunggu berlipat dua, sehingga koneksi yang putus sebentar berujung pada jeda yang lama. (Pengembangan server (Tim Pengembang Game))
- Pengiriman blocking akibat klien lambat: Jika buffer kirim untuk satu pemain dengan koneksi lambat sudah penuh, lalu server mengirim dengan cara blocking (pemanggilan yang tidak kembali sampai buffer punya ruang), thread server ikut menunggu pemain itu. (Pengembangan server (Tim Pengembang Game))
- Distribusi SO_REUSEPORT tidak merata: Jika beberapa proses berbagi satu port, kernel menetapkan proses yang menangani setiap koneksi berdasarkan hash alamat dan tidak mengubahnya. Jika satu proses itu berhenti, hanya pemain yang dialokasikan ke proses tersebut yang menunggu. (Pengembangan server (Tim Pengembang Game))
- Error WSAECONNRESET pada socket UDP Windows: Jika server Windows mengirim UDP ke klien yang sudah pergi, notifikasi “port tidak ada” (ICMP) dikirim balik. Notifikasi itu membuat pemanggilan terima berikutnya berakhir dengan error. Jika kode server memperlakukan error ini sebagai kerusakan socket itu sendiri, semua pemain yang memakai socket tersebut ikut terdampak. (Pengembangan server (Tim Pengembang Game))
L9 Proses game di server
- Perebutan lock: Jika beberapa thread menunggu satu lock untuk menulis data yang sama, walaupun thread ditambah, hanya satu yang berjalan pada satu waktu. (Pengembangan server (Tim Pengembang Game))
- Deadlock: Jika dua thread saling menunggu lock yang dipegang thread lainnya, keduanya berhenti selamanya. (Pengembangan server (Tim Pengembang Game))
- Pemanggilan sinkron di thread game: Jika di tengah tick server menunggu respons DB atau penulisan file, seluruh jalannya game di server berhenti selama waktu itu. (Pengembangan server (Tim Pengembang Game))
- Timer terpicu serentak: Jika respawn semua monster, berakhirnya semua buff, dan hadiah tepat di pergantian jam menumpuk di tick yang sama, tick itu saja menjadi puluhan kali lebih berat. (Pengembangan server (Tim Pengembang Game))
- Thread pool habis: Jika semua worker thread tertahan oleh pekerjaan lambat, permintaan baru hanya bisa menunggu tanpa kepastian. (Pengembangan server (Tim Pengembang Game))
- Infinite loop dan logika lepas kendali: Jika satu tick tidak pernah selesai karena bug, server berhenti, lalu watchdog memulai ulang server secara paksa. (Pengembangan server (Tim Pengembang Game))
- Lonjakan spawn saat masuk area padat: Saat pemain memakai teleportasi ke kota yang ramai, server harus mengirim tampilan, perlengkapan, dan status ratusan pemain yang baru terlihat sekaligus. (Pengembangan server (Tim Pengembang Game))
L10 Memori
- Jeda GC stop-the-world di server: Selama server Java atau C# menghentikan semua thread untuk mengumpulkan garbage (stop-the-world), seluruh server berhenti. (Pengembangan server (Tim Pengembang Game))
- Jeda GC di engine skrip: Walaupun servernya ditulis dengan C++, jika quest, AI, dan skill dijalankan dengan skrip seperti Lua, zona itu berhenti selama GC engine skrip berjalan. (Pengembangan server (Tim Pengembang Game))
- Lonjakan alokasi: Jika objek sementara dibuat dalam jumlah besar selama event, GC berjalan jauh lebih sering daripada biasanya. (Pengembangan server (Tim Pengembang Game))
- Kebocoran memori: Memori yang tidak dibebaskan menumpuk sedikit demi sedikit, lalu beberapa hari kemudian berujung pada GC yang berjalan tanpa henti, swap, atau proses yang dihentikan paksa. (Pengembangan server (Tim Pengembang Game))
- GC thrashing (heap hampir penuh): Jika data hidup mendekati batas heap, GC hampir tidak bisa membebaskan memori setiap kali berjalan, sehingga GC berulang tanpa henti. (Pengembangan server (Tim Pengembang Game))
- Swap: Jika memori kurang dan OS memindahkan sebagiannya ke disk, setiap kali memori itu dipakai, proses harus menunggu disk yang lebih dari 1.000 kali lebih lambat. (Infrastruktur server (Tim Infrastruktur))
L11 Disk
- Penulisan log sinkron: Jika thread game menunggu disk selesai menulis untuk setiap baris log, jalannya game ikut berhenti saat disk sibuk. (Pengembangan server (Tim Pengembang Game))
- Batas IOPS dan antrean jenuh: Jika permintaan melebihi jumlah yang bisa diproses disk per detik, antrean memanjang dan latensi melonjak tajam. (Infrastruktur server (Tim Infrastruktur))
- Lazy loading di server: Jika server membaca data dungeon atau map dari disk saat pertama kali diminta, semua pemain berhenti selama tick itu. (Pengembangan server (Tim Pengembang Game))
L12 Database
- Failover DB: Selama DB primer mati dan layanan dialihkan ke DB cadangan, penulisan tidak bisa dilakukan, dan data terakhir yang belum sempat direplikasi bisa hilang. (Infrastruktur DB (Tim Infrastruktur))
- Cache stampede: Jika cache data populer kedaluwarsa bersamaan, ribuan request menyerbu DB sekaligus. (Pengembangan server (Tim Pengembang Game))
- Perintah lambat di Redis: Redis memproses perintah satu per satu, sehingga satu perintah lambat menahan semua request di belakangnya. (Pengembangan server (Tim Pengembang Game))
L13 Arsitektur dan operasional server
- Pindah zona (handoff antarserver): Saat masuk ke area atau dungeon lain, keterlambatan dan kegagalan bisa terjadi dalam proses memindahkan data karakter ke server lain. (Pengembangan server (Tim Pengembang Game))
- Kegagalan berantai: Jika satu layanan melambat, server yang memanggilnya ikut tertahan menunggu respons, dan fitur yang tidak berhubungan pun ikut berhenti. (Pengembangan server (Tim Pengembang Game))
- Beban berlebih akibat log dan monitoring: Saat terjadi gangguan, log melonjak, dan server yang mengirim log secara sinkron menjadi makin lambat karena log itu sendiri. (Pengembangan server (Tim Pengembang Game))
Desain sinkronisasi
- Lockstep menunggu pemain paling lambat: Dalam arsitektur tempat semua pemain menghitung giliran yang sama bersama-sama, jika input satu orang terlambat, semua orang menunggu. (Pengembangan server (Tim Pengembang Game))
- Arsitektur host (pembuat room): Jika PC salah satu pemain berperan sebagai server, koneksi dan performa PC orang itu menentukan rasa bermain semua pemain. (Pengembangan server (Tim Pengembang Game))
Masalah yang hanya dialami sebagian pemain
- Data karakter tertentu terlalu besar: Karakter yang menumpuk ribuan item atau mail, atau punya daftar teman, daftar blokir, dan buff yang sangat banyak, harus memuat, menyimpan, dan mengabarkan ke sekitarnya data yang berkali-kali lipat lebih besar dari karakter lain. Lambatnya hanya terjadi pada karakter itu, tanpa peduli koneksinya. (Pengembangan server (Tim Pengembang Game))
Akar penyebab retransmisi TCP
- Packet loss di jalur nirkabel: Wi-Fi dan jaringan seluler mengirim ulang paket beberapa kali di jalur nirkabel, dan jika tetap gagal, paket dibuang. Paket yang dibuang itu baru dikirim ulang oleh TCP jauh kemudian. (Pihak Eksternal (Pihak Eksternal))
- Antrean bottleneck meluap (packet loss akibat kongesti): Saat antrean di titik tersempit penuh, misalnya router rumah, jalur penghubung antar-ISP, atau jalur data center, paket yang baru datang dibuang. (Infrastruktur jaringan (Tim Infrastruktur))
- Buffer dangkal meluap akibat burst pengiriman: Jika setiap tick server mengirim update untuk ribuan pemain sekaligus dalam sekejap, buffer kecil di switch atau batas sesaat di cloud meluap dalam waktu kurang dari 1 ms dan sebagian paket dibuang. (Pengembangan server (Tim Pengembang Game))
- Policer membuang trafik berlebih: Batas kecepatan langganan ISP, batas instance cloud, dan perangkat proteksi DDoS kadang langsung membuang paket yang melewati kecepatan yang ditetapkan tanpa memasukkannya ke antrean. (Infrastruktur jaringan (Tim Infrastruktur))
- Error fisik (kabel, modul optik, atau konektor rusak): Kabel yang rusak, konektor serat optik yang kotor, dan modul optik yang sudah habis umur pakainya menimbulkan bit error, dan paket yang rusak dibuang diam-diam oleh perangkat. (Infrastruktur jaringan (Tim Infrastruktur))
- Duplex mismatch: Jika satu sisi memakai autonegotiation sedangkan sisi lain mengunci kecepatan dan duplex, salah satu sisi berjalan dalam mode half duplex, dan paket hilang akibat collision setiap kali beban naik. (Infrastruktur jaringan (Tim Infrastruktur))
- Paket dibuang di host server penerima: Paket sudah sampai di server, tetapi dibuang karena ring buffer NIC (buffer yang menampung sementara paket yang tiba) meluap atau core yang menangani pemrosesan terima di kernel jenuh. (Infrastruktur server (Tim Infrastruktur))
- Paket dibuang oleh firewall atau connection tracking: Firewall dan connection tracking Linux (conntrack, fitur yang mencatat koneksi yang lewat ke dalam tabel) membuang paket jika tabelnya penuh atau jika paket dianggap tidak sesuai dengan status koneksi. (Infrastruktur jaringan (Tim Infrastruktur))
- Batas pemrosesan perangkat perantara terlampaui (firewall, IPS, proteksi DDoS): Firewall, perangkat pencegah intrusi (IPS), dan perangkat proteksi DDoS memeriksa setiap paket yang lewat. Begitu trafik melampaui kapasitas pemeriksaannya, paket yang tidak sempat diproses dibuang. (Infrastruktur jaringan (Tim Infrastruktur))
- MTU black hole (hanya paket besar yang berulang kali hilang): Jika ukuran maksimum yang bisa dilewati suatu jalur di tengah rute mengecil dan notifikasi “terlalu besar” (ICMP) diblokir, paket besar terus hilang berapa kali pun dikirim ulang. (Infrastruktur jaringan (Tim Infrastruktur))
- Mapping NAT atau load balancer kedaluwarsa di tengah koneksi: Jika perangkat di tengah rute menghapus mapping koneksi idle (entri yang mencatat ke mana koneksi itu diteruskan), paket berikutnya tidak bisa diteruskan. Retransmisi terus berulang sampai pemain disconnect, atau perangkat membalas dengan penolakan koneksi (RST) sehingga pemain langsung disconnect. (Pengembangan klien (Tim Pengembang Game))
- Perubahan rute dan jalur ECMP bermasalah: Paket hilang selama beberapa detik saat rute internet berubah, atau terus-menerus pada koneksi yang ditempatkan di jalur bermasalah di antara beberapa jalur ECMP. (Infrastruktur jaringan (Tim Infrastruktur))
- Retransmisi yang tidak perlu akibat lonjakan latensi: Paket sebenarnya tidak hilang dan hanya sesaat datang sangat terlambat, tetapi jika keterlambatan itu lebih lama dari RTO, pengirim menganggap paket hilang lalu mengirimnya ulang. (Pihak Eksternal (Pihak Eksternal))
- Pengaturan RTO tidak sesuai dengan lingkungan: Jika nilai minimum RTO diturunkan terlalu rendah, keterlambatan kecil saja sudah memicu retransmisi yang tidak perlu. Sebaliknya, nilai default (200 ms) terlalu panjang untuk game sehingga setiap kali paket hilang, game berhenti lama. (Infrastruktur server (Tim Infrastruktur))
- Pemulihan lambat pada thin stream: Jika game mengirim paket kecil secara jarang-jarang, RTO datang lebih dulu sebelum “3 paket susulan” terkumpul. Untuk packet loss yang sama, game berhenti jauh lebih lama daripada transfer data besar. (Pengembangan server (Tim Pengembang Game))
- Opsi TCP dihapus oleh perangkat perantara: Jika sebagian firewall atau perangkat akselerator menghapus atau mengubah opsi TCP, saat beberapa paket hilang, pemulihannya hanya satu paket per round trip, atau window (jumlah yang bisa dikirim sekaligus) mengecil sehingga koneksi melambat. (Infrastruktur jaringan (Tim Infrastruktur))
- Zero window (jeda yang terlihat seperti retransmisi): Jika program penerima tidak membaca socket tepat waktu sehingga buffer penuh, pengirim menghentikan pengiriman dan hanya mengirim zero window probe. Koneksinya sendiri baik-baik saja. (Pengembangan klien (Tim Pengembang Game))
Lihat kamus gejala interaktif dengan gambar