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

Sách trắng lag game › L9 Tiến trình game phía server

Hàng đợi message bị dồn ứ Mailbox / job queue backlog

ID nguyên nhân sp-queue · Phụ trách chính Phát triển server (Đội phát triển game)

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

Khi yêu cầu đến nhanh hơn tốc độ xử lý và dồn vào hàng đợi, các yêu cầu phía sau vài giây sau mới được xử lý hoặc bị bỏ.

Vì sao Yêu cầu đến nhanh hơn tốc độ xử lý → Dẫn đến Hàng đợi dài ra, vượt giới hạn thì bị bỏ → Trên màn hình Skill và giao dịch phản hồi chậm hoặc bị nuốt

Triệu chứng
Trễ thao tác, Nuốt thao tác·rollback
Yếu tố
Độ trễ, Mất gói
Ai gặp phải
Một địa điểm hoặc kênh, Chỉ một tính năng
Khi nào
Khi đông người
Phụ trách
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 sát độ dài hàng đợi, chính sách ưu tiên bỏ yêu cầu cũ, song song hóa việc xử lý.
Trên đồ thị
Chạm giới hạn rồi đi ngang · Độ dài hàng đợi và tuổi của message cũ nhất, số message xử lý mỗi giây
Chỗ cần xem
Độ dài từng hàng đợi, tuổi của message cũ nhất, số message vào, đã xử lý và bị bỏ mỗi giây do server ghi lại. Nếu code không có chỉ số, xem Recv-Q của socket game bằng ss (hoặc netstat): lượng dữ liệu kernel đã nhận nhưng tiến trình chưa đọc
Đúng nếu
trong lúc số vào vượt số xử lý, số xử lý đứng ở một mức không tăng thêm được, còn độ dài hàng đợi, tuổi message và số bị bỏ liên tục tăng
Loại trừ nếu
hàng đợi ngắn, tuổi message nhỏ mà phản hồi vẫn chậm → độ trễ đường truyền hoặc độ trễ của chính tick
Cách kiểm tra
Cần log và chỉ số của server, client game
Sự cố thực tế
CCP Games 2014: EVE Online: server quá tải trong trận hạm đội quy mô lớn tại HED-GP

Nguồn

  1. Avoiding insurmountable queue backlogs AWS
    Amazon Builders' Library. Giám sát tình trạng dồn ứ qua tuổi của message đang chờ; hệ thống thời gian thực xử lý dữ liệu mới trước (gần với LIFO), có khi bỏ message cũ
  2. Site Reliability Engineering, Chapter 22: Addressing Cascading Failures Google
    Khi yêu cầu đến nhanh hơn tốc độ xử lý, hàng đợi đầy và độ trễ tăng; dùng LIFO hoặc CoDel thay cho FIFO để bớt các yêu cầu cũ đã vô dụng
  3. ss(8) — Linux manual page iproute2
    Công cụ hiển thị thống kê socket (thông tin tương tự netstat); -p hiển thị tiến trình đang dùng socket
  4. netstat(8) — Linux manual page net-tools
    Recv-Q: số byte trên socket đã kết nối mà chương trình người dùng chưa lấy đi

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

Cùng tầng: L9 Tiến trình game phía server

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