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

게임 렉 백서 › L7 서버 OS (커널)

시스템 시계 점프 (NTP 스텝) Wall-clock jump (NTP step)

원인 ID so-timejump · 주 담당 게임개발팀·서버 개발 · 함께 인프라팀·서버 인프라

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

서버 시계가 한 번에 몇 초 앞뒤로 조정되면 시스템 시계에 의존하는 타이머가 한꺼번에 발동하거나 멈춥니다.

왜 시간 동기화가 시계를 한 번에 크게 조정 → 그러면 타이머가 몰아서 발동하거나 멈추고 타임아웃이 잘못 판정됨 → 화면에서는 버프·쿨타임 이상, 일제히 접속 끊김, 몰아치기

증상
몰아치기, 접속 끊김, 씹힘·롤백
요인
정체
누가 겪나
서버 전체
언제
가끔 무작위로
담당
주 담당 게임개발팀·서버 개발 · 함께 인프라팀·서버 인프라
게임개발팀 할 일
경과 시간·타임아웃·쿨타임은 뛰거나 되돌아가지 않는 단조 시계(monotonic clock)로 계산, wall clock은 표시·기록용으로만.
인프라팀 할 일
시계는 서서히 조정(chrony의 makestep은 켜진 직후에만), 시간 동기화 상태(시계 차이) 모니터링.
수치 감각
ntpd는 차이가 0.128초를 넘으면 한 번에 맞추고 그보다 작으면 1초 차이를 없애는 데 30분 남짓 걸리는 속도로 서서히 맞춥니다. 요즘 많이 쓰는 chrony는 권장 설정(makestep)에서 켜진 직후 몇 번만 한 번에 맞추고, 그 뒤에는 서서히 맞춥니다. 가상 머신이 잠깐 멈췄다 깨어날 때도 시계가 뜁니다.
그래프에서는
가끔 무작위로 튐 · 타이머 발동 수·끊김 수, 시계 조정 기록
확인할 곳
시간 동기화 서비스의 로그에서 시계를 한 번에 크게 조정한 기록을 찾아 이상이 난 시각과 맞춰 봄. chrony는 logchange에 정한 값(기본 1초)보다 크게 조정하면 syslog에 남김
이러면 맞음
버프·쿨타임 이상, 일제히 접속 끊김, 몰아치기가 난 시각에 시계 조정 기록이 있고 조정 폭이 이상의 크기와 비슷함
이러면 아님
시계 조정 기록이 없으면 이 원인이 아님. 가상 머신이면 멈췄다 깨어난 경우(“클라우드 호스트 점검·라이브 마이그레이션”)도 봄
확인 수단
인프라 도구로 확인(게임 코드 불필요)

출처

  1. ntpd - Network Time Protocol (NTP) daemon Network Time Foundation
    차이가 스텝 임계값 128ms를 넘으면 한 번에 맞추고 작으면 서서히 맞춤, 초당 0.5ms씩이라 1초를 맞추는 데 2,000초(약 33분) 걸림
  2. chrony – Frequently Asked Questions chrony
    makestep 1 3처럼 시작 직후 몇 번만 스텝을 허용하는 것이 권장, 멈췄다 재개한 가상 머신은 시각이 틀어진 채 깨어날 수 있음
  3. clock_gettime(2) — Linux manual page Linux man-pages
    CLOCK_MONOTONIC은 시스템 시계의 불연속 점프에 영향받지 않고 뒤로 가지 않음
  4. chrony.conf(5) chrony
    logchange: 이 값(기본 1초)보다 크게 시계를 조정하면 syslog에 기록

함께 보면 좋은 원인

같은 층: L7 서버 OS (커널)

같은 증상(몰아치기)의 다른 층 원인

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