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

Sách trắng lag game › L13 Kiến trúc và vận hành server

Lệch đồng hồ giữa các server Clock skew between servers

ID nguyên nhân in-clock-skew · Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp 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 →

Nếu đồng hồ của các server lệch nhau một chút, việc phán định hồi chiêu, buff, thời điểm bắt đầu sự kiện sẽ không khớp giữa các server.

Vì sao Đồng hồ của server bị ngừng đồng bộ thời gian lệch với server khác từ vài trăm ms đến vài giây → Dẫn đến Truyền thời điểm tuyệt đối như lúc buff hết hạn giữa các server thì phán định bị lệch → Trên màn hình Di chuyển sang nơi khác thì buff biến mất hoặc hồi chiêu chạy lại từ đầu

Triệu chứng
Nuốt thao tác·rollback
Yếu tố
Độ trễ
Ai gặp phải
Chỉ mình tôi
Khi nào
Khi di chuyển hoặc chuyển bản đồ
Phụ trách
Phụ trách chính Hạ tầng server (Độ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)
Giữa các server, truyền thời gian còn lại thay cho thời điểm tuyệt đối.
Việc cần làm (Đội hạ tầng)
Giám sát đồng bộ thời gian (NTP, chrony), cảnh báo độ lệch đồng hồ giữa các server.
Con số tham khảo
Khi đồng bộ thời gian (NTP, chrony) hoạt động bình thường, các server trong cùng một trung tâm dữ liệu thường lệch nhau trong vòng vài ms. Khi đồng bộ bị ngừng hoặc server ảo bị dừng lâu rồi chạy lại, độ lệch tăng lên vài trăm ms đến vài giây.
Trên đồ thị
Tăng dần · Độ lệch (offset) đồng hồ theo server
Chỗ cần xem
Thu thập và so sánh System time (chênh lệch giữa đồng hồ hệ thống và đồng hồ NTP), Last offset và Ref time (thời điểm lần cuối áp dụng giá trị đo từ nguồn thời gian) trong chronyc tracking của từng server
Đúng nếu
offset của server có vấn đề lệch hơn các server khác từ vài trăm ms trở lên hoặc Ref time đã dừng từ lâu, và việc phán định bị lệch chỉ xảy ra khi di chuyển qua lại server đó
Loại trừ nếu
offset của mọi server đều trong vòng vài ms → xem cách tính thời gian phía game hoặc sai số đồng bộ đồng hồ của client
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Tìm hiểu thêm
Trường hợp đồng hồ của một server nhảy tới hoặc lùi trong một lần được trình bày ở “Đồng hồ hệ thống nhảy (NTP step)” thuộc tầng OS server.

Nguồn

  1. RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification IETF
    NTP client trong mạng LAN tốc độ cao thường khớp trong vòng vài trăm µs
  2. chrony – Frequently Asked Questions chrony
    Độ trôi (drift) của đồng hồ máy tính thông thường dưới 100 ppm nhưng máy ảo có thể lớn hơn; máy ảo bị tạm dừng rồi chạy lại có thể bị lệch giờ và cần hiệu chỉnh kiểu step
  3. clock_gettime(2) — Linux manual page Linux man-pages
    CLOCK_REALTIME có thể nhảy không liên tục do đổi giờ thủ công hoặc hiệu chỉnh NTP, còn CLOCK_MONOTONIC không bị ảnh hưởng bởi các bước nhảy đó
  4. chronyc(1) chrony
    System time (chênh lệch giữa đồng hồ NTP và đồng hồ hệ thống), Last offset (offset ước tính ở lần hiệu chỉnh gần nhất), Ref time (thời điểm áp dụng giá trị đo cuối cùng từ nguồn thời gian) trong chronyc tracking

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

Cùng tầng: L13 Kiến trúc và vận hành server

Nguyên nhân ở tầng khác gây cùng triệu chứng (Nuốt thao tác·rollback)

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