Khi kết nối nhàn rỗi một lúc, TCP thu nhỏ lại cửa sổ tắc nghẽn (lượng dữ liệu gửi được trong một lần), nên khi đột ngột gửi dữ liệu lớn, TCP phải chia ra gửi nhiều lượt.
Vì sao Gửi dữ liệu lớn (ví dụ khi vào thị trấn) qua một kết nối đang nhàn rỗi → Dẫn đến Cửa sổ tắc nghẽn đã bị thu nhỏ nên dữ liệu bị chia ra gửi qua nhiều lượt khứ hồi → Trên màn hình Ngay sau khi vào, nhân vật và NPC xung quanh hiện ra trễ vài lượt khứ hồi (server càng xa càng dễ thấy)
Khi di chuyển hoặc chuyển bản đồ, Sau khi để yên một lúc
Phụ trách
Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Giảm dữ liệu gửi lúc vào (gửi những gì thật sự cần trước).
Việc cần làm (Đội hạ tầng)
Tắt tcp_slow_start_after_idle (Linux, cấu hình cho cả server).
Con số tham khảo
Nhàn rỗi lâu hơn RTO thì cửa sổ tắc nghẽn bắt đầu thu nhỏ; nếu nhàn rỗi lâu, nó giảm xuống khoảng 14 KB (10 gói). Khi đó 100 KB không gửi được trong một lần mà phải chia ra 3 lượt khứ hồi.
Trên đồ thị
Chỉ một phần cao · Thời gian truyền ngay sau khi vào (người chơi có RTT dài)
Chỗ cần xem
Giá trị sysctl net.ipv4.tcp_slow_start_after_idle; lúc người chơi vào một khu vực sau khi nhàn rỗi, cwnd (cửa sổ tắc nghẽn) của kết nối đó trong ss -ti có bị thu nhỏ không
Đúng nếu
cấu hình là 1 (mặc định), và lúc vào sau khi nhàn rỗi, cwnd giảm xuống quanh 10 nên việc truyền bị chia ra nhiều lượt khứ hồi. Người chơi có RTT càng dài thì mọi thứ hiện ra càng trễ, và đổi thành 0 thì hết
Loại trừ nếu
cwnd vẫn giữ ở mức lớn mà mọi thứ vẫn hiện ra trễ → phần xử lý vào khu vực phía server (“Spawn dồn dập khi vào khu vực đông người”)
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Nguồn
IP SysctlLinux kernel tcp_slow_start_after_idle mặc định bật; nhàn rỗi trong một khoảng RTO thì thu nhỏ cửa sổ tắc nghẽn (theo cách của RFC 2861)
RFC 5681: TCP Congestion ControlIETF Nếu không gửi dữ liệu lâu hơn RTO, cửa sổ tắc nghẽn bị giảm xuống tối đa bằng cửa sổ khởi động lại min(IW, cwnd) và slow start lại từ đầu