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

Sách trắng lag game › Thiết kế đồng bộ

Giao thức nhiều lượt khứ hồi tuần tự (chatty) Chatty protocol / sequential round trips

ID nguyên nhân sy-chatty · 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)

Mở thẻ gốc có hình minh họa và thí nghiệm →

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

Triệu chứng
Trễ thao tác, Không vào được·kẹt loading
Yếu tố
Độ trễ
Ai gặp phải
Chỉ một tính năng, Chỉ mình tôi
Khi nào
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

  1. Chatty I/O antipattern Microsoft 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

Nguyên nhân nên xem cùng

Cùng tầng: Thiết kế đồng bộ

Nguyên nhân ở tầng khác gây cùng triệu chứng (Trễ thao tác)

Xem thẻ gốc có hình minh họa và thí nghiệm