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.
Mengapa Jumlah pemain online bersamaan mencapai batas file descriptor proses → Akibatnya Server tidak bisa menerima koneksi baru (Too many open files). Membuka file log dan koneksi DB juga ikut gagal → Di layar Begitu jumlah pemain mencapai angka tertentu, tidak ada lagi yang bisa masuk: pemain baru gagal masuk atau terjebak loading tanpa henti
Tepat setelah login atau maintenance, Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Tutup socket dengan pasti saat koneksi diakhiri (mencegah kebocoran fd), jika accept gagal dengan EMFILE (fd habis) hentikan sementara penerimaan koneksi atau terima koneksi dengan fd cadangan yang sudah disisihkan lalu langsung tutup (agar CPU tidak terbuang untuk memproses notifikasi koneksi yang sama berulang-ulang).
Tugas Tim Infrastruktur
Periksa ulimit dan konfigurasi service (LimitNOFILE di systemd), pasang alert saat mendekati batas.
Kisaran angka
Di Linux, jika service tidak dikonfigurasi khusus, batasnya masih sering 1.024. Server game biasanya menaikkannya ke puluhan ribu hingga ratusan ribu. Windows tidak punya batas default serendah ini.
Di grafik
Mendatar di batas · Jumlah fd terbuka pada proses, jumlah koneksi bersamaan
Yang diperiksa
Periksa fd-nr (jumlah file descriptor yang terbuka) proses server game dengan pidstat -v dan batas jumlah file terbuka di /proc/PID/limits, lalu cari kegagalan accept (EMFILE, Too many open files) di log server
Cocok jika
Jumlah fd mendatar di nilai batas, dan sejak saat itu accept gagal dengan EMFILE
Tidak cocok jika
Jumlah fd masih jauh di bawah batas: bukan penyebab ini. Permintaan koneksi dibuang di kernel: lebih mungkin “Antrean koneksi (backlog) meluap”. Masalahnya di connection tracking: lebih mungkin “Tabel conntrack server penuh”
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Koneksi yang tidak diterima tetap tertinggal di antrean koneksi (backlog) kernel. Akibatnya, tergantung kodenya, server bisa terus menerima notifikasi “ada koneksi baru” dan membuang-buang CPU.