한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Libro blanco del lag en juegos › L8 Sockets y protocolos

Política para clientes lentos (slow consumer) Slow-consumer policy

ID de la causa sk-slow-client · Responsable principal Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Cuando a un cliente se le siguen acumulando datos pendientes de envío, el servidor descarta las actualizaciones viejas o corta la conexión.

Por qué La conexión del cliente no da abasto con lo que envía el servidor → Efecto El servidor descarta las actualizaciones viejas o, si se supera el límite, cierra la conexión → En pantalla Teletransporte o desconexión solo para ese jugador

Síntomas
Teletransporte, Desconexión
Factores
Pérdida de paquetes
A quién afecta
Solo yo
Cuándo
Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Reducir lo que se envía (frecuencia de actualización según la distancia), seguir enviando con menos calidad, reducir lo que se acumula en el kernel (TCP_NOTSENT_LOWAT de Linux).
Cifras de referencia
Con un búfer de envío de 256 KB, en una conexión de 30 KB/s se acumulan más de 8 segundos de datos atrasados. Linux puede incluso agrandar este búfer automáticamente hasta varios MB.
En el gráfico
Alto solo en algunos · Send-Q por conexión, actualizaciones descartadas por cliente
Dónde mirar
Longitud de la cola de envío, actualizaciones descartadas y motivos de desconexión por cliente que registra el servidor del juego; en el servidor, el Send-Q y la cwnd de esa conexión con ss -tni
Se confirma si
Solo las conexiones de quienes sufren teletransporte o desconexiones tienen el Send-Q lleno todo el tiempo, y el log del juego registra descartes de sus actualizaciones o desconexiones por exceso en la cola de envío
Se descarta si
Si el Send-Q está vacío y aun así hay teletransporte, el problema no está en el envío del servidor. Apunta a la pérdida en la conexión de ese jugador (“Pérdida en el tramo inalámbrico”) o a la interpolación en pantalla
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego

Fuentes

  1. IP Sysctl Linux kernel
    tcp_wmem: máximo del búfer de envío con ajuste automático, de 64 KB a 4 MB por defecto (según la memoria); limitar los datos aún no enviados con tcp_notsent_lowat o TCP_NOTSENT_LOWAT
  2. net/ipv4/tcp_diag.c (Linux v6.12) Linux kernel
    Valores Recv-Q y Send-Q de ss: en un socket de escucha, conexiones esperando accept y límite del backlog; en un socket conectado, bytes que la aplicación aún no ha leído y bytes enviados que no han recibido ACK

Ver también

Misma capa: L8 Sockets y protocolos

Causas de otras capas con el mismo síntoma (Teletransporte)

Ver la ficha interactiva con gráficos y simulaciones