뒤끝 펑션 작동 방식에 대해 문의드립니다.

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

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

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

  • 뒤끝 SDK 버전 : 5.11.5
  • 프로젝트명 : FancyDoll
  • 스테이터스 코드 :
  • 에러 코드 : Timeout
  • 에러 메시지 :

안녕하세요.

뒤끝 펑션 SDK 사용 중 타임아웃 에러가 자주 발생해 문의드립니다.

뒤끝 펑션 이용 중 Cold Start 구간을 지나고 Warm Start 상태에서 가끔씩 다시 Cold Start로 넘어가는 현상이 발생하는거 같습니다. 게임 로직 상 3분이내 지속적으로 통신을 하는데도 말입니다.

그래서 추측하기로 뒤끝 펑션 하나를 동시에 여러 유저가 사용할 수가 없어보입니다. 동시에 같은 펑션을 여러명이 호출할 경우 유저 수 만큼 다시 펑션이 추가로 시작이 되는거 같은데 이 부분이 맞는지 궁금합니다.

현재 타임아웃 에러가 자주 발생해서 지속적으로 펑션 코드를 수정하면서 개선중에 있으나 본질적인 문제를 찾고자 문의드립니다.

추가로 최초 디비 트랙잭션을 펑션에서 호출시 시간이 많이 걸리는것으로 파악되었는데 이부분은 어쩔수 없는걸까요~?

좋아요 1

안녕하세요 개발자님,
말씀해주신 상황은
펑션 내부에서 호출되는 뒤끝 베이스 함수(동기로 작동)가 많아지면서 각 호출에 대한 응답을 기다리며(또는 복잡한 연산이 이루어지는 로직을 이용하면서) 오랜 시간이 소요되어 발생하는 상황으로 예상됩니다.

개발자 문서를 통해 안내된 것과 같이,
뒤끝펑션 내에서 1~2개의 뒤끝 베이스 함수를 호출하는 것은 응답시간에 큰 영향을 끼치지 않지만
3개 이상의 뒤끝 함수를 호출하는 경우 응답시간에 영향을 끼칠 수 있으니 참고하여 이용해 주시면 감사하겠습니다. (로직이 복잡한 경우도 발생 가능)

현재 프로젝트에서 펑션 내부 호출되는 뒤끝 베이스 함수는 Transaction으로 Read/Write 최대 2번이 이루어지고 있습니다.

그럼에도 WarmUp 상태에서 통신 지연이 발생하는 것을 확인하였습니다.

뒤끝 펑션 프로젝트에 각 구간 별 걸리는 시간을 측정하는 코드를 심어 놓고 병목 현상이 일어나는 부분을 파악했을때, 복잡한 연산 보다는 Transaction 의 Read에서 시간이 많이 드는 것으로 파악했습니다.
이 경우에도 뒤끝 베이스 함수 호출 수는 최대 2번이였습니다.

이 부분은 정상인지 확인 부탁드립니다.

문의하신 내용 상세히 확인하여 안내드릴 수 있도록 하겠습니다.

좋아요 1

문의해주신 내용 확인과 관련해 아래 안내드리는 내용을 공유 요청드립니다.

  • 트랜잭션 2개를 호출하는데 측정된 시간은 몇초가량인지
  • 외부 라이브러리를 사용하였는지 여부
좋아요 1

웜업 상태에서 여러명이서 동시에 동일한 펑션 함수 호출을 동시에 할 경우 자주 발생하는 것으로 확인 되었습니다. 예를 들어 3명이서 동시에 동일한 펑션 함수를 호출하면 한명 정도는 통신 지연이 발생하고 아래와 같이 시간이 걸렸습니다.
-TransactionReadV2, TransactionWriteV2 두개를 호출할때 Read 부분에서 4.5초~5.5초 정도 걸렸습니다.
-펑션에서 사용하는 외부 라이브러리는 없습니다.

공유 감사드립니다.
확인 후 안내드리도록 하겠습니다.

좋아요 1

기다려주셔서 감사합니다.
추가로 문의하신 내용을 토대로 확인 시, 펑션 첫 호출 시 발생할 수 있는 현상으로 확인됩니다.
기본적으로 펑션이 한번 뜨면 재활용이 되나, 요청이 많아지는 경우 새롭게 추가로 띄우게 됩니다.
이러한 요청이 지속적으로 증가하면서 새로운 펑션 발생으로 인해 한번 느려지는 경우가 있으니 이 점 이용에 참고 부탁드립니다.

좋아요 1

답변 감사합니다 :slight_smile:

현재 방치형 게임을 개발하고 있습니다.
서버와 클라이언트 게임 상태 동기화 검증을 위해 펑션을 사용하고 있습니다.

해당 문제가 발생하면 게임 도중 느려지는 현상이 발생해 타임아웃이 발생합니다.
해당 현상은 조금 크리티컬한 것으로 보여집니다.

혹시, 이 문제를 해결할 수 있는 좋은 방법이 있을까요~?

예를 들면 게임 시작전에 미리 펑션 N개를 구동 시킬 수 있는 방법?
아니면 더 좋은 방법이 있는지 궁금합니다!

혹시 이 부분은 조언이 어려울까요…??
:sob:

일단 간혈적으로 발생하는 케이스 이며,
첫 호출이 실패하더라도 서버는 스타트가 되기 시작하므로 재시도시 타임아웃이 발생하지는 않을 것입니다.
타임아웃이 발생하면 다시 한번 더 시도하도록 로직을 구성해주시고 (권장은 3회)
실제 라이브 서비스에서는 호출하는 유저가 많아서 유저가 호출하지 않아 콜드스타트가 되는 부분은 잘 없을 것으로 예상됩니다.
또한 10초가 타임아웃인 건에 대해서는 좀 더 늘릴 수 있도록 내부에 건의해보겠습니다

펑션 이용과 관련하여서는 이 이상의 답변을 드리지는 못하는 점 양해 바랍니다.

좋아요 1