자정이후 시간이 계속 멈추는 증상이 발생합니다

자정이후로 게임내 시간이 멈추는 현상이 지속적으로 발생 중입니다.
2월 10일에 있었던 시간 함수 문제와 관련 있을 듯한데, 타겜 운영자 님들도 비슷한 증상 있으신가요?

같은 문제라면 관리자님은 빠른 확인 및 조취 바랍니다.

저희 서버도 매 분마다 서버시간가져오는데 지금 이상황 때문에 유저분들 계속 팅기고 있습니다

저희도네요;; 하아;;

안녕하세요. 뒤끝 서버팀입니다.

  1. 23:59 → 00:00으로 전환되는 시점의 1분동안 시간요청 트래픽이 200% 급증, 00:02부터 하락하여 정상화되는 현상을 확인하였습니다. 공유 감사드립니다.

  2. 00:00 ~ 00:01 시간대에 getServertime 처리 서버의 부하가 급증하여 오류율에 포함된 특정 유저는 정상 응답을 받지 못했을 것입니다.

  3. 2월 13일 → 2월 14일로 전환되는 00:00시점부터 새로운 스케일링 정책이 적용되어 해당 현상이 완화될 것입니다.

  • 매 분마다의 getSerertime 함수 요청은 안티패턴입니다. 로그인 시점에 getSerertime을 1회 호출, 변수에 담아둔 후 update 때 증가시켜 로컬 시간과 비교하는 패턴을 공식적으로 권장합니다. 이를 보정하는 인터벌 시간은 30분 ~ 수시간을 권장합니다.

이용에 불편을 드려 죄송합니다.

자정에만 그런게 아닙니다.
2시에서 3시사이에 30분~ 한시간동안 오류발생했습니다.

일시적인 트래픽인지는 모르겠으나 일시적인 시간이 아닌
지속적으로 발생했어요

다시 확인하셔서 재발 방지좀 신경써주세요

구체적인 예시가 있을까요? 보고 적용하고 싶습니다. 매 분마다 서버 시간을 가져오게 된 계기는 핸드폰 로컬 시간을 고의적으로 변경하여 악용하는 사례를 몇 차례 확인했기 때문입니다. 말씀하신 방법이 안정적이라면 지금 당장이라도 수정하고 싶습니다.

안녕하세요.

공유해주신 내용 포함하여 확인, 대응중입니다.
2월 13일 → 2월 14일 00:00부터 대응내용이 적용될 것입니다.

감사합니다 :)

안녕하세요.

로직을 설명드리면 다음과 같습니다.

  1. 게임 시작시점에 getServertime을 호출, 응답받은 서버시간을 메모리에 저장합니다.
    이 때 검증+복구로직을 도입, 최소 1회 성공(statusCode 200)을 꼭 확인하는것을 권장합니다.
  2. update에서 프레임마다 (1)변수의 시간을 add합니다.
    시계가 흘러간다고 생각해주세요. (타이머)
  3. 서버 시간 확인이 필요할 때 로컬 시간과 (1)을 비교합니다. <-> 이 과정에서 로컬타임의 변조를 탐지할 수 있습니다.
  • onApplicationFocus, onApplicationPause등의 생명주기 진입시 시간 add가 정상 동작하지 않을 수 있습니다. 이를 바로잡기 위해 수시간에 한번씩 (1)을 재호출, 서버 시간을 동기화합니다. 추천 주기는 3시간입니다.

1분 인터벌을 권장하지 않는 이유는 불안정한 네트워크 환경에서 오류의 원인이 될 수 있기 때문입니다.

감사합니다.