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

게임 렉 백서 › L13 서버 구성과 운영

서버 간 시계 차이 Clock skew between servers

원인 ID in-clock-skew · 주 담당 인프라팀·서버 인프라 · 함께 게임개발팀·서버 개발

그림과 실험이 있는 원본 카드로 열기 →

서버마다 시계가 조금씩 다르면 쿨타임·버프·이벤트 시작 판정이 서버마다 어긋납니다.

왜 시간 동기화가 멈춘 서버의 시계가 다른 서버와 수백 ms~수 초 벌어짐 → 그러면 버프 끝나는 시각 같은 절대 시각을 서버 사이에 넘기면 판정이 어긋남 → 화면에서는 이동하니 버프가 사라지거나 쿨타임이 다시 참

증상
씹힘·롤백
요인
지연
누가 겪나
나만
언제
이동 중·지역 전환 때
담당
주 담당 인프라팀·서버 인프라 · 함께 게임개발팀·서버 개발
게임개발팀 할 일
서버 사이에는 절대 시각 대신 남은 시간으로 전달.
인프라팀 할 일
시간 동기화(NTP·chrony) 감시, 서버 간 시계 차이 경보.
수치 감각
시간 동기화(NTP·chrony)가 정상이면 같은 데이터센터 서버끼리는 보통 수 ms 안쪽입니다. 동기화가 멈추거나 가상 서버가 오래 멈췄다 풀리면 수백 ms~수 초로 벌어집니다.
그래프에서는
서서히 오름 · 서버별 시계 오프셋
확인할 곳
서버마다 chronyc tracking의 System time(시스템 시계와 NTP 시계의 차이)·Last offset과 Ref time(마지막으로 시간 원본의 측정값을 반영한 시각)을 모아 비교
이러면 맞음
문제 서버의 오프셋이 다른 서버보다 수백 ms 이상 벌어져 있거나 Ref time이 오래전에 멈춰 있고, 판정 어긋남이 그 서버를 오가는 이동에서만 생김
이러면 아님
모든 서버의 오프셋이 수 ms 안이면 게임 쪽 시간 계산이나 클라이언트의 시계 동기화 오차 쪽
확인 수단
인프라 도구로 확인(게임 코드 불필요)
더 알아보기
한 서버의 시계가 한 번에 앞뒤로 뛰는 일은 서버 OS 층의 “시스템 시계 점프 (NTP 스텝)”에서 다룹니다.

출처

  1. RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification IETF
    빠른 LAN의 NTP 클라이언트는 보통 수백 µs 안으로 맞음
  2. chrony – Frequently Asked Questions chrony
    보통 컴퓨터 시계의 드리프트는 100ppm 미만이지만 가상 머신은 더 클 수 있음, 일시 정지했다 재개한 가상 머신은 시각이 틀어져 스텝 보정이 필요할 수 있음
  3. clock_gettime(2) — Linux manual page Linux man-pages
    CLOCK_REALTIME은 수동 변경·NTP 보정으로 불연속하게 뛸 수 있고, CLOCK_MONOTONIC은 그런 점프의 영향을 받지 않음
  4. chronyc(1) chrony
    chronyc tracking의 System time(NTP 시계와 시스템 시계의 차이), Last offset(마지막 보정 때 추정한 오프셋), Ref time(시간 원본의 마지막 측정값을 반영한 시각)

함께 보면 좋은 원인

같은 층: L13 서버 구성과 운영

같은 증상(씹힘·롤백)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기