ID de la causa sk-slowstart · Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
Si una conexión TCP pasa un rato inactiva, vuelve a reducir la ventana de congestión (lo que puede enviar de una vez), y cuando de repente tiene que enviar muchos datos, los envía en varias tandas.
Por qué Se envían muchos datos, por ejemplo al entrar en un pueblo, por una conexión que estaba inactiva → Efecto Como la ventana de congestión está reducida, el envío se reparte en varios viajes de ida y vuelta → En pantalla Justo después de entrar, los personajes y NPC de alrededor aparecen varios viajes de ida y vuelta más tarde (se nota más cuanto más lejos está el servidor)
Al moverse o cambiar de zona, Tras un rato inactivo
Responsable
Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Reducir los datos que se envían al entrar en una zona (enviar primero lo imprescindible).
Tareas (Equipo de infraestructura)
Desactivar tcp_slow_start_after_idle (Linux, ajuste para todo el servidor).
Cifras de referencia
Si la conexión pasa inactiva más tiempo que el RTO, la ventana de congestión empieza a reducirse y, tras una inactividad larga, baja a unos 14 KB (10 paquetes). Entonces 100 KB ya no se pueden enviar de una vez y se reparten en 3 viajes de ida y vuelta.
En el gráfico
Alto solo en algunos · Tiempo de envío justo después de entrar (jugadores con RTT alto)
Dónde mirar
Valor de sysctl net.ipv4.tcp_slow_start_after_idle; al entrar en una zona tras un rato inactivo, si la cwnd (ventana de congestión) de esa conexión en ss -ti se ha reducido
Se confirma si
El ajuste está en 1 (predeterminado) y, al entrar tras un rato inactivo, la cwnd baja a unos 10 y el envío se reparte en varios viajes de ida y vuelta. Cuanto mayor es el RTT del jugador, más tarde aparecen las entidades, y con 0 el problema desaparece
Se descarta si
Si la cwnd se mantiene grande y aun así aparecen tarde, apunta al procesamiento de entrada del servidor (“Avalancha de spawns al entrar en una zona concurrida”)
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Fuentes
IP SysctlLinux kernel tcp_slow_start_after_idle activado por defecto; si la conexión pasa inactiva un RTO, reduce la ventana de congestión (método de RFC 2861)
RFC 5681: TCP Congestion ControlIETF Si no se han enviado datos durante más tiempo que el RTO, reducir la ventana de congestión a la ventana de reinicio min(IW, cwnd) o menos y aplicar slow start