Buku Putih Lag Game › Cari berdasarkan gejala
Tidak bisa masuk / loading tanpa henti: 45 penyebab dan penanggung jawabnya
Disebut juga: tidak bisa login, loading tak kunjung selesai
Buka kamus gejala interaktif dengan gambar →
Tidak bisa masuk ke dalam game, atau tertahan di layar loading atau layar masuk.
Pesan “Tidak dapat terhubung ke server” muncul berulang kali, atau loading bar tidak kunjung penuh setelah memilih karakter.
Titik yang menerima koneksi baru (antrean koneksi server, firewall, server login, DB) sudah penuh. Ini sangat sering terjadi tepat setelah maintenance.
Penyebab gejala ini
L2 OS dan perangkat klien
- Pemeriksaan paket oleh program keamanan: Jika antivirus atau firewall memeriksa semua paket, latensi bertambah, dan jika berlebihan, game salah dikira serangan lalu diblokir. (Pihak Eksternal (Pihak Eksternal))
L3 Jaringan rumah
L4 Jalur internet
- Pembatasan UDP dan inspeksi paket per negara atau ISP: Sebagian jaringan memblokir alamat dan port UDP tertentu atau membatasi kecepatan UDP, dan perangkat inspeksi paket menyaring protokol yang tidak dikenalinya. Game yang berkomunikasi lewat UDP tidak bisa tersambung atau sering terputus di jaringan itu. (Pihak Eksternal (Pihak Eksternal))
- Gangguan dan latensi DNS: Jika DNS, yang menerjemahkan nama server menjadi alamat, lambat atau gagal, server login dan server patch tidak bisa ditemukan. (Pihak Eksternal (Pihak Eksternal))
- Jalur bersama penuh akibat DDoS: Serangan besar yang ditujukan ke perusahaan game atau ke pihak lain di jaringan yang sama memenuhi jalur bersama. (Infrastruktur jaringan (Tim Infrastruktur))
- IP bersama dari ISP (CGNAT): Jaringan seluler dan sebagian ISP membuat banyak pelanggan berbagi satu IP, dan mapping koneksi idle dihapus dalam waktu singkat. (Pengembangan klien (Tim Pengembang Game))
- Rute lewat VPN atau game booster: Jika VPN atau game booster diaktifkan, paket melewati server relay milik perusahaan itu. Jika server relay jauh atau padat, koneksi malah menjadi lebih lambat. (Pihak Eksternal (Pihak Eksternal))
L5 Perangkat jaringan data center
- Tabel sesi firewall penuh: Firewall mencatat dan melacak setiap koneksi yang diloloskannya di tabel sesi. Jika tabelnya penuh, koneksi baru tidak bisa diterima. (Infrastruktur jaringan (Tim Infrastruktur))
- Rute lewat proteksi DDoS dan false positive: Saat trafik dialihkan ke scrubbing center untuk menangkal serangan, rutenya menjadi lebih panjang, dan pemain yang normal kadang salah dikira serangan lalu diblokir. (Infrastruktur jaringan (Tim Infrastruktur))
- Batas koneksi dan port NAT gateway cloud: Koneksi dari server di subnet privat ke luar (autentikasi platform, pembayaran, API eksternal) dikirim keluar oleh NAT gateway setelah alamat dan portnya diganti. Jika koneksi bersamaan ke tujuan yang sama melebihi batas port gateway, koneksi baru gagal. (Infrastruktur jaringan (Tim Infrastruktur))
- Distribusi load balancer timpang dan health check keliru: Koneksi menumpuk di satu server saja, atau pemain terus dikirim ke server yang sudah mati. (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))
L7 OS server (kernel)
- Antrean koneksi (backlog) meluap: Jika puluhan ribu pemain login bersamaan tepat setelah maintenance, antrean koneksi (backlog) di kernel meluap dan upaya koneksi dibuang. (Pengembangan server (Tim Pengembang Game))
- Batas file descriptor: Setiap koneksi membutuhkan satu file descriptor (fd, nomor yang diberikan OS untuk file dan socket yang terbuka), dan jumlah fd yang bisa dibuka oleh satu proses dibatasi. (Infrastruktur server (Tim Infrastruktur))
- Tabel conntrack server penuh: Jika tabel connection tracking (conntrack), tempat firewall Linux mencatat semua koneksi, mencapai batasnya, paket baru dibuang. (Infrastruktur server (Tim Infrastruktur))
- Port ephemeral habis pada koneksi antarserver: Jika server game sering membuka dan menutup koneksi singkat ke DB atau server lain, koneksi yang sudah ditutup tetap menahan port untuk sementara sehingga koneksi baru tidak bisa dibuka. (Pengembangan server (Tim Pengembang Game))
L8 Socket dan protokol
- Nilai default keepalive 2 jam: Jika pihak lawan menghilang tanpa sinyal penutupan, TCP baru mendeteksinya lama kemudian. keepalive (fitur TCP untuk memeriksa apakah koneksi idle masih hidup) nonaktif secara default, dan walaupun diaktifkan, pemeriksaan baru dimulai setelah koneksi idle selama 2 jam. (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))
L9 Proses game di server
- Thread pool habis: Jika semua worker thread tertahan oleh pekerjaan lambat, permintaan baru hanya bisa menunggu tanpa kepastian. (Pengembangan server (Tim Pengembang Game))
L11 Disk
- Penulisan core dump: Saat server crash, memori sebesar beberapa GB ditulis ke disk, sehingga restart bisa tertunda beberapa menit. (Infrastruktur server (Tim Infrastruktur))
L12 Database
- Query tanpa indeks: Tanpa indeks, DB harus membaca seluruh tabel untuk menemukan baris yang memenuhi kondisi (full table scan). (Pengembangan server (Tim Pengembang Game))
- Connection pool habis: Jumlah koneksi yang dibuka ke DB terbatas, jadi jika query lambat menahan koneksi, request lainnya harus menunggu. (Pengembangan server (Tim Pengembang Game))
- Cold cache (tepat setelah restart): Setelah DB dimulai ulang, cache di memori kosong, sehingga untuk sementara semua pembacaan data diambil dari disk. (Infrastruktur DB (Tim Infrastruktur))
- Lonjakan login dan N+1 query: Jika memuat satu karakter butuh puluhan query terpisah, login bersamaan puluhan ribu pemain berubah menjadi jutaan query. (Pengembangan server (Tim Pengembang Game))
- 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))
- Query melambat karena query plan berubah: Walaupun kodenya tidak berubah, jika DB mengganti cara memproses query yang sama (query plan), query yang kemarin 2 ms bisa menjadi ratusan ms hari ini. (Infrastruktur DB (Tim Infrastruktur))
- Lock akibat perubahan skema (DDL) saat layanan berjalan: Jika kolom atau indeks ditambahkan ke tabel saat layanan berjalan, satu lock yang dibutuhkan sesaat bisa membuat semua request yang memakai tabel itu menunggu. (Infrastruktur DB (Tim Infrastruktur))
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))
- Gangguan server pendukung: Jika server yang berjalan terpisah dari server game, seperti server chat, party, atau balai lelang, mengalami gangguan, hanya fitur itu yang tidak berfungsi. (Pengembangan server (Tim Pengembang Game))
- Deploy dan restart: Jika koneksi tidak dipindahkan saat server dimulai ulang untuk update, pemain di server itu disconnect, lalu penyimpanan data menjelang shutdown dan reconnect membanjir sekaligus. (Pengembangan server (Tim Pengembang Game))
- Keterlambatan autoscaling: Saat pemain membanjir, server ditambah secara otomatis, tetapi persiapannya butuh beberapa menit, dan selama itu server yang ada kelebihan beban. (Infrastruktur server (Tim Infrastruktur))
- Ketergantungan pada layanan eksternal: Jika layanan eksternal seperti login platform, pembayaran, atau verifikasi identitas lambat atau berhenti, proses tertahan di tahap itu. (Pihak Eksternal (Pihak Eksternal))
- Sertifikat TLS kedaluwarsa atau salah konfigurasi: Jika sertifikat server login, API, atau patch kedaluwarsa atau sertifikat perantaranya tidak disertakan, koneksi TLS dari klien yang baru tersambung gagal sejak saat itu. (Infrastruktur jaringan (Tim Infrastruktur))
- Batas antrean login dan masa tenggang reconnect yang terlalu singkat: Jika koneksi membanjir tepat setelah rilis atau maintenance, antrean login mencapai batas dan menolak antrean baru, sementara pemain yang sedang menunggu kehilangan tempatnya saat koneksinya terputus sebentar dan kembali ke urutan paling belakang. (Pengembangan server (Tim Pengembang Game))
Desain sinkronisasi
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))
- Bentrok port UDP tetap: Jika klien dibuat untuk memakai port lokal yang tetap, klien kedua di PC yang sama tidak bisa memakai port itu atau harus berbagi paket dengan klien pertama. (Pengembangan klien (Tim Pengembang Game))
- Pembatasan multi-klien: Jika modul keamanan atau kebijakan server membatasi beberapa klien di satu PC, klien kedua tidak bisa dijalankan atau masuk, atau klien yang dinyalakan lebih dulu terputus. Sebagian game hanya memblokir fitur pada klien tambahan. (Pengembangan klien (Tim Pengembang Game))
Akar penyebab retransmisi TCP
- 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))
- 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))
- Retransmisi permintaan koneksi (SYN): Jika permintaan koneksi hilang karena antrean koneksi (backlog) meluap atau diblokir firewall, OS klien mengirimnya ulang mulai 1 detik kemudian dengan interval yang makin panjang. (Pengembangan server (Tim Pengembang Game))
Lihat kamus gejala interaktif dengan gambar