Kết nối dồn vào một server, hoặc người chơi cứ bị gửi tới server đã chết.
Vì sao Quy tắc phân bổ không phù hợp, hoặc health check không phản ánh trạng thái thực → Dẫn đến Chỉ một server bị quá tải, hoặc người chơi cố kết nối tới server đã chết → Trên màn hình Chỉ một số kênh hoặc một số người bị quay chậm, không vào được·kẹt loading
Phụ trách chính Hạ tầng mạng (Độ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)
Hiện thực health check trả lời yêu cầu kiểm tra của bộ cân bằng tải dựa trên trạng thái game thực (tick có chạy không, kết nối DB), gửi kèm giá trị tải của server.
Việc cần làm (Đội hạ tầng)
Đổi health check sang cách xác nhận phản hồi thực của game, phân bổ theo tải server, giám sát chênh lệch số kết nối giữa các server.
Trên đồ thị
Chỉ một phần cao · Số kết nối, mức sử dụng CPU theo server
Chỗ cần xem
Vẽ chồng số kết nối (ss -s) và mức sử dụng CPU của từng server sau bộ cân bằng tải trên cùng một đồ thị, và so sánh trạng thái health của target trên bộ cân bằng tải (AWS: HealthyHostCount, UnHealthyHostCount trên CloudWatch) với trạng thái thực của server game
Đúng nếu
chỉ một hai server có số kết nối, CPU cao hơn hẳn các server khác, hoặc server đã dừng tick vẫn giữ trạng thái health “bình thường” và tiếp tục nhận kết nối mới
Loại trừ nếu
số kết nối giữa các server đồng đều mà chỉ một kênh chậm → tải bên trong kênh đó (“Quá tải khu vực chạy trên một thread (hotspot)”)
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Load Balancing in the DatacenterGoogle Round robin đơn giản khiến mức dùng CPU giữa các tác vụ chênh nhau tới 2 lần, phân bổ có trọng số trong đó backend gửi kèm thông tin tải trong phản hồi và health check, trạng thái lame duck báo không nhận thêm yêu cầu
Health checks for Network Load Balancer target groupsAWS Health check mặc định cách 30 giây, lỗi 2 lần thì bị loại; dịch vụ UDP được kiểm tra bằng health check TCP hay HTTP nên khuyến nghị cấu hình sao cho phản ánh trạng thái dịch vụ thực