Algoritma Nagle yang mengumpulkan paket kecil sebelum dikirim dan delayed ACK yang menunda pengiriman ACK saling mengunci, sehingga setiap kali pesan ditulis terpisah-pisah terjadi keterlambatan 40–200 ms.
Mengapa Pesan kecil ditulis terpisah-pisah tanpa mengaktifkan TCP_NODELAY → Akibatnya Pengirim menunggu ACK, sedangkan penerima menunda pengiriman ACK → Di layar Ping koneksi rendah, tetapi semua aksi terasa lamban secara konsisten (input lag)
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Server: aktifkan TCP_NODELAY, kumpulkan pesan selama satu tick lalu tulis sekaligus, jangan mengandalkan cara mematikan delayed ACK di sisi penerima (TCP_QUICKACK di Linux hanya bertahan sebentar, di Windows registry harus diubah di setiap PC) karena game tidak bisa mengendalikannya dengan pasti. Klien: aktifkan TCP_NODELAY, kumpulkan pesan selama satu frame lalu tulis sekaligus.
Kisaran angka
Delayed ACK di Linux biasanya 40 ms (hingga 200 ms tergantung situasi). Di Windows, versi lama memakai 200 ms dan versi sekarang 40 ms (template default Windows Server 2019: 40 ms). Delayed ACK ditentukan oleh OS penerima, jadi jika server mengirim pesan terpisah-pisah dengan Nagle aktif, keterlambatannya bisa 40–200 ms tergantung PC penerimanya.
Di grafik
Selalu tinggi sejak awal · Waktu respons aksi (RTT di dalam game)
Yang diperiksa
Periksa jeda antara permintaan dan respons di packet capture sisi server (tcpdump, Wireshark), lalu pastikan kode server dan klien mengaktifkan TCP_NODELAY
Cocok jika
Ping koneksi rendah, tetapi jeda kosong sekitar 40 ms (200 ms di Windows versi lama) berulang di antara paket kecil, dan jeda itu berakhir tepat setelah ACK dari pihak lawan datang. Hilang setelah TCP_NODELAY diaktifkan
Tidak cocok jika
Jeda respons mirip dengan ping koneksi: bukan penyebab ini. Server game terlambat membuat respons: masalahnya di pemrosesan server (“Penumpukan antrean pesan”)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Sumber
RFC 9293: Transmission Control Protocol (TCP)IETF Nagle menahan data kecil selama masih ada data yang belum mendapat ACK; harus bisa dimatikan per koneksi; delayed ACK kurang dari 0,5 detik; masalah saat keduanya saling mengunci
include/net/tcp.h (Linux v6.12)Linux kernel Delayed ACK di Linux minimal TCP_DELACK_MIN (HZ/25 = 40 ms), maksimal TCP_DELACK_MAX (HZ/5 = 200 ms)