몇몇 유저에게 클라우드세이브 로드가 매우 오래 걸리는 현상

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 베이스/채팅/데이터베이스/월드 SDK 버전 :
  • 프로젝트명 : 냥찍 히어로즈
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

뒤끝 개발팀을 통한 별도의 기술지원이 작업이 필요한 요청은 help@backnd.com 으로 문의해주시기 바랍니다.

안녕하세요. 일부 유저들에게 Backend.CloudSave.Download가 응답이 매우 오래 걸리거나 타임아웃이 나는 현상이 제보되어 문의드립니다.
해당 함수를 호출하는 부분에서 재접속을 여러번 해도 아예 안넘어간다는 유저들이 존재하며, 3분 이상 기다려봤으나 넘어가지 않는다는 유저들이 있습니다.
해당 유저들 중 일부는 몇시간 이후 다시 시도했을 때는 정상화된 것으로 보입니다.

또한 소수 유저들에게 '와이파이로 하면 안되고 데이터로 플레이하면 잘된다’라는 정황을 전달받았습니다.

해당 부분에서는 queue를 사용하지 않고 아래와 같은 형태로 호출중입니다.
var cloudSaveBro = Backend.CloudSave.Download(“PlayerData”);

클라우드 세이브 로드 호출 외에는 정상적인 것으로 보이며(확실하지는 않음), 공통적으로 유저들이 더 앞단의 로그인부분은 넘어간 것으로 보아 인터넷 상태 이슈는 아닌 것으로 추정합니다.

이상 현상을 겪은 유저들 중 제보받은 유저의 Gamer ID를 첨부드립니다.

  • cb67b7c0-8586-11f1-aa81-b5876cc70dec (어제 오후 9시, 금일 새벽 4시경 접속 안됨)
  • 47345930-7817-11f1-880f-e92b373cce9d (어제 오후 8시 40분경 접속 안됨)
  • 00fb70b0-4573-11f1-9fdf-49b877df15e3 (어제 오후 4시경 접속 안됨)
  • 8b9f5710-7f9b-11f1-9945-8933a86b57ef (어제 오후 4시경 접속 안됨)
  • d17d59a0-7aad-11f1-9171-812df88be860 (어제 오후 10시 50분경 접속 안됨)
  • 21a7ff10-782f-11f1-880f-e92b373cce9d (어제 오후 9시 50분, 금일 오전 9시 25분경 접속 안됨)
  • 05e51dc0-78f8-11f1-a87e-c7ada18d58f7 (어제 새벽 1시 접속 안됨)

이 외에도 익명으로 제보되어 정확한 추적은 어려운 유저들이 다수 있는 상황입니다.
명절에 문의드려 송구하오나, 금일 대규모 마케팅을 진행중이라 확인 및 대응해주시면 감사하겠습니다.

좋아요 1

추가적인 정보 공유드립니다.

  • 이러한 현상이 발생하지 않는 유저는 아예 발생하지 않는 것 같음
  • 상기 공유드린 유저들을 비롯해 발생하는 유저들에게는 지속적으로 같은 현상으로 접속이 안될 때가 있음(수십번 시도하면 접속된다고 함)
  • 우연일 수 있으나, 모두 안드로이드 유저인 것 같음

유저들의 불만이 어제보다 더 거세진 것 같습니다. 명절에 지속적인 문의를 드리는 점 송구하오나, 확인 및 해결 부탁드립니다.

안녕하세요 개발자님,

공유해주신 유저 정보를 기준으로 서버 로그를 확인해 보았습니다.
해당 유저들의 최근 이틀간 Download 요청 200여건 중 응답이 2초 이상 지연된 건은 2건이었으며, 요청이 실패하거나 서버 에러가 발생한 이력은 확인되지 않았습니다.

원인 확인을 위해, 현상 발생 시 아래 내용을 확인 부탁드립니다.

  • 문제 현상이 Backend.CloudSave.Download 호출에서 발생하는지 혹은 Backend.CloudSave.Download 가 아닌 다른 호출에서 발생하는지
  • 만약 Backend.CloudSave.Download 호출에서 문제가 발생한다면 응답 없이 멈추는지, 실패 응답이 반환되는지 (반환된다면 StatusCode, ErrorCode, Message 값)

확인주셔서 감사합니다. 내부적으로 확인 후 금방 답변드리겠습니다!

상기 내용에 대해 내부적으로 확인 후 답변드립니다.

  1. 문제 현상이 Backend.CloudSave.Download 호출에서 발생하는지 혹은 Backend.CloudSave.Download 가 아닌 다른 호출에서 발생하는지

저희 게임에는 대부분의 서버 호출에 대해 로그를 수집하고 있으나, 아쉽게도 Backend.CloudSave.Download에 대해 타임아웃과 관련한 로그를 심지는 않았습니다. 따라서 명확한 로그를 확보해 전달드릴 수는 없으나, 유저들에게 제보가 오는 타이틀 화면에서 멈춘 부분은 아래의 서버 호출부만 포함하고 있습니다.

  • Backend.CloudSave.Download
  • Backend.Utils.GetServerTime
  • Backend.Group.Table.Get

이슈의 대상으로 고려하지 않았으나 Backend.Utils.GetServerTime와 Backend.Group.Table.Get이 원인일 가능성이 있을 것 같습니다.

  1. 만약 Backend.CloudSave.Download 호출에서 문제가 발생한다면 응답 없이 멈추는지, 실패 응답이 반환되는지 (반환된다면 StatusCode, ErrorCode, Message 값)

현재 해당 호출부에서는 await문을 사용하지 않고 있어 높은 확률로 응답 없이 멈추는 현상(Thread가 잠겨있는 상황)으로 보입니다. 실패 응답에 관하여서는 현재 수집된 점이 없는 점 양해 부탁드리며, 404등의 특수한 에러코드는 이미 자체적으로 예외처리를 하고 있으니 해당 에러코드는 아닌 점을 확인하였습니다.

공유해주신 내용에 따라

  • Backend.Utils.GetServerTime
  • Backend.Group.Table.Get

두 함수의 이력도 확인해보았으나 해당 함수들은 최근 3일간 어떠한 에러 발생기록도 확인되지 않고 있습니다.

별도 채널로 공유해주신 19시 20분 접속 시도 유저의 경우,
확인 시 Backend.Utils.GetServerTime 호출 이후 더이상 호출이 존재하지 않으며
Backend.Group.Table.Get 호출 자체를 진행하지 않은 것으로 확인됩니다.

답변주셔서 감사합니다. 저희측에서 추가로 파악한 답변을 전달드리겠습니다.

  • Backend.Utils.GetServerTime 함수 호출 이후 즉시 Backend.CloudSave.Download를 호출하므로, Backend.Utils.GetServerTime 호출 이후 더이상 호출이 존재하지 않는 부분으로 보아 클라이언트측에서 Backend.CloudSave.Download를 쏘았으나 서버가 요청 자체를 전달받지 못한 것으로 보입니다.
  • Backend.Group.Table.Get 호출의 경우에는 Backend.CloudSave.Download 단계를 통과해야 호출하므로, Backend.CloudSave.Download 호출 응답을 클라이언트측에서 받지 못한다면 Backend.Group.Table.Get 역시 못받을 수 있을 것 같습니다.
  • 만약을 위해, Backend.Utils.GetServerTime와 Backend.CloudSave.Download의 호출 사이의 크래쉬 가능성 검토 및 크래쉬 로그 확인을 해보았으나 Backend.CloudSave.Download를 서버에 요청하지 않을 일은 없을 것입니다.

즉, 클라이언트측에서 Backend.CloudSave.Download를 쏘았으나 서버가 요청을 받지 못한 부분일 가능성이 클 것으로 보입니다. 이 부분을 염두하여 추가로 확인해주시면 감사하겠습니다.

저희측에서는 혹시나를 위해 모든 크래쉬 로그를 조사해 Backend.Utils.GetServerTime와 Backend.CloudSave.Download 사이에 발생할 수 있는 이슈가 있는지 점검해보겠습니다.

남겨주신 정보 내부 공유하였습니다.
관련 내용 확인 후 회신드리겠습니다.

공휴일임에도 불구하고 대응해주셔서 감사합니다.

추가로 아쉽게도 한 가지 이슈가 더 발생하였습니다.
이전에 문의드린 클라우드세이브 데이터가 '{}'가 되어버리는 이슈가 한 유저에게 추가로 발생하였습니다.

관련하여서 해당 유저의 정보와 콘솔에서 클라우드세이브 데이터 확인 시의 스샷 공유드립니다.
Gamer Id: b43630e0-97d3-11f1-a853-1f5298ef3285

image

해당 유저분의 상태를 기반으로 뒤끝측에서 파악하시기 위해 그대로 둘지, 아니면 백업데이터로 복구해드려도 될지 답변주시면 따라서 즉시 대응하겠습니다(빨리 백업데이터로 복구해드려야 하긴 합니다…!).

좋아요 1

즉시 확인해 안내드리겠습니다.

혹시 몰라서 지금 클라이언트측에서 개발서버에서 아래와 같은 테스트를 진행하였습니다.

  • Backend.CloudSave.Upload에 “” 혹은 “{}” 혹은 "null"를 넣을 가능성을 검토했으나, 전혀 없으며 예외처리가 되어있음.
  • Backend.CloudSave.Upload에 “” 혹은 “{}” 혹은 "null"을 인위적으로 넣어 보내보았으나, 모두 400에러가 발생하였고 콘솔에서 해당 테스트계정의 클라우드세이브 데이터를 확인했을 때 “” 혹은 “{}” 혹은 "null"로 덮어씌워지지 않는 점을 확인하였음.

즉, 클라이언트는 서버측에 정상적인 데이터를 보냈을 가능성이 크며, 데이터를 서버측에서 전달받은 뒤에 유실({}로 저장됨)이 발생했을 가능성이 높아보입니다.


추가로, 상기 답변드렸던 Backend.Utils.GetServerTime와 Backend.CloudSave.Download 사이에 발생할 수 있는 크래쉬를 조사해보았을 때는 아무런 크래쉬 사례가 없었음을 전달드립니다. 두 호출부 사이에는 사실상 거의 코드가 없어 논리적으로도 발생할 수 없는 점 참고 부탁드립니다.

좋아요 1

우선 데이터 상황은 확인하였습니다.
복구 진행해주시면 될것 같습니다.
세부 확인 후 안내드리겠습니다.

좋아요 1

Backend.CloudSave.Download 호출과 관련해 추가 확인 결과,
클라우드 세이브가 사용하는 스토리지 인프라(Cloudflare)에서 간헐적인 연결 문제가 발생하고 있는 것을 확인했습니다.
Cloudflare 측 일부 서버가 응답하지 않아 해당 서버로 연결된 요청이 지연되거나 타임아웃이 발생하고 있습니다.

참고로 Cloudflare에서도 아시아·태평양 지역의 해저 케이블 장애로 인한 네트워크 성능 저하를 공지하고 있으며, 현재까지 복구가 진행 중인 상황으로 확인됩니다.
이번 현상도 같은 시기에 발생하고 있어 관련 영향이 있는 것으로 보고 있습니다.

뒤끝에서는 Cloudflare 측 복구와 별개로, DNS 중 일부 문제 발생시 빠르게 정상서버로 우회하도록 로직 개선을 진행함으로서 서비스 최적화를 진행할 예정에 있습니다.
명절 연휴 중 이용에 불편을 드려 죄송합니다.

외부 인프라에 물리적인 문제가 있었군요 ㅠㅠ 명절임에도 점검해주신 점 감사드립니다.
DNS 우회 관련한 서버로직 작업이 완료되었을 때 노티주시면 감사하겠습니다.

추가로 이슈가 장기 지속한 만큼 피해 유저들에게 보상을 지급해야 하는 상황인데, 아래의 기준으로 피해 유저 명단 확보가 가능한지 여쭙습니다.
아래의 작업이 뒤끝측 기술지원이 필요한 작업일 경우 견적을 말씀주시면 비용 지불하여 진행할 수 있도록 하겠습니다.

  • 서버측에서 Backend.Utils.GetServerTime 호출을 전달받은 후, 수 초 안에 Backend.CloudSave.Download 호출은 전달받지 못한 유저(해당 유저를 이슈 피해 유저로 판단하는게 어떨까 합니다)

발견이 어려운 이슈임에도 확인주시느라 고생 많으셨습니다!