Setiap kali retransmisi gagal lagi, waktu tunggu berlipat dua, sehingga koneksi yang putus sebentar berujung pada jeda yang lama.
Mengapa Koneksi putus sebentar sehingga retransmisi pun gagal berturut-turut → Akibatnya Waktu tunggu sampai percobaan berikutnya berlipat dua: 0,3 → 0,6 → 1,2 → 2,4 detik (untuk ping 100 ms) → Di layar Koneksi hanya putus 1 detik, tetapi game freeze lebih dari 2 detik. Jika putusnya lebih lama, akhirnya disconnect
Sesekali secara acak, Saat bergerak atau pindah area
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Server: balas heartbeat dan putuskan koneksi lebih dulu jika tidak ada heartbeat dalam waktu tertentu (percepat titik menyerah dengan TCP_USER_TIMEOUT), lanjutkan sesi dengan token sesi, gunakan reliable UDP. Klien: kirim heartbeat dengan interval pendek, dan jika respons berhenti, segera reconnect tanpa menunggu retransmisi TCP.
Kisaran angka
RTO (waktu tunggu retransmisi) di Linux minimal “ping + 200 ms”, dan saat koneksi dibuat, RTO dimulai dari 1 detik. Dengan pengaturan default (tcp_retries2=15), walaupun retransmisi terus gagal, koneksi baru dilepas setelah sekitar 15 menit.
Di grafik
Kosong lalu datang sekaligus · RTO dan backoff per koneksi, jumlah RTO habis
Yang diperiksa
Periksa rto (waktu tunggu retransmisi dalam ms) dan backoff (jumlah RTO habis berturut-turut) pada koneksi yang berhenti dengan ss -ti; untuk seluruh server, periksa kenaikan TcpExtTCPTimeouts (jumlah timer retransmisi habis) di nstat -az
Cocok jika
backoff pada koneksi yang berhenti bernilai 1 atau lebih, rto membesar hingga satuan detik, dan TCPTimeouts naik pada saat itu
Tidak cocok jika
Retransmisi selesai lewat fast retransmit dan tidak ada RTO yang habis: berhentinya singkat, dan dalam kasus itu lebih mungkin “HOL blocking pada TCP”
net/ipv4/tcp_input.c (Linux v6.12)Linux kernel RTO di Linux = smoothed RTT + variasi RTT, dan batas bawah variasinya adalah tcp_rto_min (200 ms), sehingga RTO minimal RTT+200 ms
IP SysctlLinux kernel tcp_rto_min_us default 200 ms, RTO pertama untuk permintaan koneksi 1 detik, dengan tcp_retries2=15 waktu sampai menyerah minimal 924,6 detik (sekitar 15 menit)
ss(8) — Linux manual pageiproute2 rto (timer retransmisi, ms) dan backoff (jumlah exponential backoff) pada -i
net/ipv4/tcp_timer.c (Linux v6.12)Linux kernel Setiap kali timer retransmisi habis, TCPTimeouts naik, backoff bertambah satu, dan RTO digandakan (sampai nilai maksimum)