Nếu một thao tác cần nhiều lượt khứ hồi tới server theo thứ tự, ping bị nhân lên đúng bấy nhiêu lần.
Vì sao Mở cửa hàng → yêu cầu danh sách → kiểm tra giá → mua → cập nhật túi đồ, mỗi bước là một yêu cầu riêng → Dẫn đến Phải nhận được trả lời của yêu cầu trước mới gửi yêu cầu tiếp theo → Trên màn hình Ping 150 ms thì mua một lần mất gần 1 giây. Loading lâu bất thường
Khi làm một thao tác nhất định, Ngay sau đăng nhập hoặc bảo trì
Phụ trách
Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Server: đổi giao thức để gộp nhiều bước vào một lần yêu cầu và phản hồi (ví dụ: gửi kèm túi đồ đã cập nhật trong phản hồi mua hàng). Client: tải trước dữ liệu cần dùng, UI không phải chờ kết quả.
Con số tham khảo
Thời gian mất ≈ số lượt khứ hồi × (ping + xử lý trên server + chờ tick). 5 lượt với ping 150 ms thì mất khoảng 0,85–1 giây.
Trên đồ thị
Luôn cao ngay từ đầu · Thời gian hoàn tất theo tính năng, số lượt khứ hồi của một thao tác
Chỗ cần xem
Trong bản bắt gói tin phía server (Wireshark), dùng tài khoản thử nghiệm thực hiện một lần thao tác như mua hàng hoặc đăng nhập, rồi đếm số lần yêu cầu và phản hồi luân phiên qua lại cùng khoảng cách giữa chúng. Nếu có log yêu cầu phía server: nhóm theo session ID để xem số yêu cầu và thời điểm đến, thời điểm phản hồi của từng yêu cầu
Đúng nếu
một thao tác có nhiều yêu cầu lần lượt qua lại, yêu cầu sau chờ phản hồi của yêu cầu trước, thời gian hoàn tất xấp xỉ số lượt khứ hồi × RTT, và người chơi ở khu vực ping càng cao thì cùng một tính năng càng chậm theo tỷ lệ
Loại trừ nếu
chỉ một hai lượt khứ hồi nhưng một phản hồi mất lâu → nguyên nhân ở xử lý trên server hoặc DB. Mọi người chơi đều chậm như nhau bất kể ping → xem tải server
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Nguồn
Chatty I/O antipatternMicrosoft Azure Nhiều yêu cầu I/O nhỏ thì độ trễ cộng dồn làm giảm mạnh khả năng phản hồi. Khuyến nghị gộp thành ít yêu cầu lớn hơn