When a connection has been idle for a while, TCP shrinks the congestion window (how much it can send at once) again, so a sudden large send goes out in several rounds.
Why A large burst of data (on entering a town, for example) goes out over a connection that was idle → Effect The congestion window has shrunk, so the data is spread over several round trips → On screen Right after entering, nearby characters and NPCs appear a few round trips late (more noticeable on distant servers)
While moving or changing zones, After sitting idle
Owner
Primary owner Infra team (Server infrastructure) · Also Game team (Server development)
Game team action items
Shrink the entry data (send what’s essential first).
Infra team action items
Turn off tcp_slow_start_after_idle (Linux, server-wide setting).
Ballpark numbers
After an idle period longer than the RTO, the congestion window starts shrinking, and after a long idle period it drops to about 14 KB (10 packets). Then 100 KB can’t go out at once and takes 3 round trips.
On the graph
Outliers only · Transfer time right after entering (players with long RTT)
Where to look
The value of sysctl net.ipv4.tcp_slow_start_after_idle, and whether cwnd (congestion window) in ss -ti for that connection has shrunk at the moment a player enters an area after being idle
Confirmed if
The setting is 1 (the default), and on entering after idle, cwnd drops to around 10 and the transfer is split over several round trips. The longer a player’s RTT, the later things appear, and setting it to 0 makes the problem go away
Ruled out if
cwnd stays large, yet things still appear late: server-side entry handling (“Spawn burst when entering a crowded area”)
Check with
Infra tools (no game code needed)
Sources
IP SysctlLinux kernel tcp_slow_start_after_idle on by default, the congestion window shrinks after an RTO of idle time (RFC 2861 method)
RFC 5681: TCP Congestion ControlIETF If no data has been sent for longer than the RTO, the congestion window is cut to at most the restart window min(IW, cwnd) and slow start begins again