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

게임 렉 백서 › L6 서버 네트워크 카드

클라우드 호스트 점검·라이브 마이그레이션 Cloud host maintenance / live migration

원인 ID nic-host-maintenance · 주 담당 인프라팀·서버 인프라 · 함께 게임개발팀·서버 개발, 외부·외부

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

클라우드 사업자가 물리 서버(호스트)를 점검할 때 가상 머신을 다른 호스트로 옮기거나(라이브 마이그레이션) 잠시 멈춥니다. 그동안 서버 전체가 멈추고 멈춘 시간이 길면 연결이 끊깁니다.

왜 사업자가 호스트 점검이나 고장 예측으로 가상 머신을 다른 호스트로 옮기거나 잠시 일시 정지 → 그러면 옮기는 동안 CPU·메모리·네트워크가 느려지고 마지막에 가상 머신이 잠깐 완전히 멈춤(사업자와 방식에 따라 1초 미만에서 30초 안팎) → 화면에서는 서버의 모두가 동시에 멈췄다가 몰아치기·순간이동, 멈춤이 타임아웃보다 길면 대량 접속 끊김

증상
멈춤, 몰아치기, 순간이동, 접속 끊김
요인
정체, 손실
누가 겪나
서버 전체
언제
가끔 무작위로
담당
주 담당 인프라팀·서버 인프라 · 함께 게임개발팀·서버 개발, 외부·외부
게임개발팀 할 일
수 초 멈춤을 견디는 타임아웃, 멈춘 뒤 따라잡는 틱 수에 상한 두기, 경과 시간은 단조 시계(monotonic clock)로 계산, 점검 알림을 받으면 진행 상황을 저장하고 유저를 다른 서버로 옮기는 절차.
인프라팀 할 일
점검 알림 구독과 경보(Google Cloud maintenance-event, AWS 예약 이벤트·AWS Health, Azure Scheduled Events), 알림을 받으면 유저가 적은 시간에 미리 서버 교체, 사업자가 허용하면 점검 시각 조정(Azure Maintenance Configuration, 종류에 따라 AWS 예약 이벤트), 점검 기록과 장애 기록 대조.
외부 할 일
클라우드 사업자에 점검 일정과 영향 범위 확인, 같은 인스턴스에서 멈춤이 반복되면 신고.
수치 감각
Google Compute Engine은 라이브 마이그레이션의 멈춤이 보통 1초보다 훨씬 짧다고 하고, 멈추는 동안 시스템 시계가 최대 5초 앞으로 뛸 수 있습니다. 메타데이터의 maintenance-event 값은 옮기기 60초 전에 바뀝니다(그 전에 이 값을 한 번 이상 조회해 둔 경우). Azure는 재부팅이 필요 없는 점검이면 거의 항상 10초 미만, 드물게(일반 크기는 18개월에 한 번 이하) 약 30초 멈추고 라이브 마이그레이션은 보통 5초를 넘지 않습니다. Azure Scheduled Events는 이런 멈춤(Freeze)을 최소 15분 전에 알립니다. 다만 호스트 하드웨어가 갑자기 고장 나면 알림 없이 바로 복구를 시작합니다.
그래프에서는
끊겼다가 몰아서 · 서버 송수신 패킷 수, 틱 간격
확인할 곳
멈춘 시각을 사업자 기록과 대조함. Google Cloud는 감사 로그의 compute.instances.migrateOnHostMaintenance, AWS는 describe-instance-status·AWS Health의 예약 이벤트, Azure는 활동 로그(Activity Log)의 Microsoft.Compute/virtualMachines/liveMigration/action과 VM 가용성 지표(VmAvailabilityMetric)가 0으로 떨어진 시각. 서버 안에서는 멈춘 동안 지표·로그가 비었는지, 직후 시계가 뛰었는지(시간 동기화 로그) 봄
이러면 맞음
서버 전체가 멈춘 시각이 사업자가 기록한 점검·마이그레이션 시각과 겹치고 그 몇 초 동안 서버 안의 지표·로그가 모두 빔
이러면 아님
사업자 기록에 없고 짧은 멈춤이 자주 되풀이되면 “CPU 스틸 (가상 머신)”. 커널 로그에 NIC 재설정 기록이 있으면 “NIC 드라이버·펌웨어 문제”
확인 수단
인프라 도구로 확인(게임 코드 불필요)
더 알아보기
AWS는 예약 이벤트로 알립니다. system-reboot는 재부팅하며 새 호스트로 옮기는 이벤트이고 system-maintenance는 네트워크·전원 점검으로 잠시 영향을 줄 수 있는 이벤트입니다. 멈춘 시간이 몇 초여도 그동안 서버에 보낸 패킷의 ACK를 받지 못한 클라이언트는 재전송 대기를 두 배씩 늘려 가므로, 풀린 뒤에도 TCP 연결은 더 오래 멈춰 있을 수 있습니다(“TCP RTO와 지수 백오프”). 멈췄다 깨어나면 “시스템 시계 점프 (NTP 스텝)”처럼 시계가 뛰기도 하고 로드밸런서 헬스체크가 실패해 그 서버를 잠시 빼기도 합니다. 옮길 수 없는 인스턴스(Google Cloud의 베어메탈 인스턴스 등)는 점검 때 중지되거나 다시 시작됩니다.

출처

  1. Live migration process during maintenance events Google Cloud
    라이브 마이그레이션의 멈춤은 보통 1초보다 훨씬 짧음, 멈추는 동안 시스템 시계가 최대 5초 앞으로 뜀, 옮기는 동안 디스크·CPU·메모리·네트워크 성능이 잠시 떨어짐, 라이브 마이그레이션하지 않는 VM은 점검 때 종료(베어메탈 인스턴스는 지원 안 함)
  2. Query metadata server for maintenance event notices Google Cloud
    maintenance-event 메타데이터 값이 라이브 마이그레이션 60초 전에 바뀜(라이브 마이그레이션 설정이고 지난 점검 뒤 이 값을 한 번 이상 조회한 경우)
  3. Monitor and plan for a host maintenance event Google Cloud
    점검 때 감사 로그에 compute.instances.migrateOnHostMaintenance 시스템 이벤트가 남음
  4. Scheduled events for Amazon EC2 instances AWS
    예약 이벤트 종류(system-reboot는 재부팅하며 새 호스트로 이동, system-maintenance는 네트워크·전원 점검으로 잠시 영향), 메일·AWS Health로 알림, describe-instance-status로 확인, 종류에 따라 시각 조정 가능
  5. Maintenance and updates Microsoft Azure
    재부팅 없는 점검은 거의 항상 10초 미만 멈춤, 드물게(일반 크기는 18개월에 한 번 이하) 약 30초, 라이브 마이그레이션은 보통 5초 이하, 멈춘 뒤 시계 자동 동기화, 긴 TCP 연결이 끊기거나 상대가 멈춘 VM에 보낸 데이터를 지수 백오프로 재전송해 복구가 더 늦어질 수 있음, 로드밸런서 헬스체크가 약 10초 안에 비정상으로 판정, 활동 로그의 Microsoft.Compute/virtualMachines/liveMigration/action과 멈추는 동안 0이 되는 VmAvailabilityMetric으로 확인, Maintenance Configuration으로 적용 시각 선택
  6. Scheduled Events for Linux VMs in Azure Microsoft Azure
    Freeze(몇 초 멈춤, CPU·네트워크가 멈출 수 있음)는 최소 15분 전에 알림, 호스트 하드웨어 고장 때는 알림 기간 없이 바로 복구 시작

함께 보면 좋은 원인

같은 층: L6 서버 네트워크 카드

같은 증상(멈춤)의 다른 층 원인

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