Với client mà dữ liệu cần gửi cứ dồn lên mãi, server bỏ bớt các bản cập nhật cũ hoặc ngắt kết nối.
Vì sao Đường truyền của client không theo kịp lượng dữ liệu server gửi → Dẫn đến Server bỏ các bản cập nhật cũ, hoặc ngắt kết nối khi vượt giới hạn → Trên màn hình Chỉ người chơi đó bị dịch chuyển tức thời hoặc mất kết nối
Phụ trách chính 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 lượng gửi (tần suất cập nhật theo khoảng cách), hạ chất lượng nhưng vẫn gửi đều, giảm lượng dữ liệu nằm chờ trong kernel (TCP_NOTSENT_LOWAT trên Linux).
Con số tham khảo
Với bộ đệm gửi 256 KB, trên đường truyền 30 KB/s sẽ dồn lại lượng dữ liệu của hơn 8 giây. Linux còn có thể tự động nới bộ đệm này lên tới vài MB.
Trên đồ thị
Chỉ một phần cao · Send-Q theo từng kết nối, số bản cập nhật bị bỏ theo từng client
Chỗ cần xem
Độ dài hàng đợi gửi, số bản cập nhật bị bỏ và lý do ngắt kết nối theo từng client mà server game ghi lại; trên server, xem cùng lúc Send-Q và cwnd của kết nối đó bằng ss -tni
Đúng nếu
chỉ kết nối của những người bị nhảy vị trí hoặc mất kết nối là có Send-Q luôn đầy, và log game ghi lại việc bỏ bản cập nhật hoặc ngắt kết nối do vượt hàng đợi gửi của những người đó
Loại trừ nếu
Send-Q trống mà người chơi vẫn bị dịch chuyển tức thời (vấn đề không nằm ở phía gửi của server). Xem mất gói trên đường truyền của người đó (“Mất gói ở chặng không dây”) hoặc phần nội suy trên màn hình
Cách kiểm tra
Cần log và chỉ số của server, client game
Nguồn
IP SysctlLinux kernel tcp_wmem: mức tối đa của bộ đệm gửi tự điều chỉnh mặc định là 64 KB–4 MB (tùy bộ nhớ); tcp_notsent_lowat và TCP_NOTSENT_LOWAT giới hạn lượng dữ liệu chưa gửi
net/ipv4/tcp_diag.c (Linux v6.12)Linux kernel Giá trị Recv-Q và Send-Q trong ss: với socket đang listen là số kết nối chờ accept và giới hạn backlog; với socket đã kết nối là số byte ứng dụng chưa đọc và số byte đã gửi nhưng chưa nhận được ACK