버그 해결을 위한 모든 질문을 던져
+1 vote
128 views

안녕하세요.

 

현재 서비스 중인 게임이 Unity3D 엔진의 UnityWebRequest 를 이용해 POST 방식으로 NodeJS express 환경의 웹서버와 통신을 합니다.

 

불특정한 유저들이 Network Error를 발생하며 cannot connect to destination host 이와 같은 error.message를 출력하는 것이 로그에 잡히며 현재 구조상 매우 크리티컬합니다.

 

다만 문제는 웹서버의 httpd, nginx, nodejs 쪽의 에러 로그에는 남는 로그가 전무하며 클라이언트 측에서 송신하는 로그에는 덜렁 "cannot connect to destination host" 만 error를 뱉고 끝납니다.

 

위와 같은 경우가 발생 할 시에 다시 한 번 리퀘스트를 송신하는 방식으로 일단 우선적으로 대처를 하고 문제의 근본을 짚고 수정하려고 하는데 해당 에러에 대해선 너무나도 다양한 케이스가 스택오버플로나 구글에 많아 원인 진단에 난항을 겪고 있습니다.

 

혹 이와 비슷한 증상을 겪고 해결해 보신 분 있으실까요?

 

보통 해당 문제가 발생하는 때엔 클라이언트가 초당 4~5회 정도 웹서버와 통신하고 있을 때입니다.

 

 

[갱신 / 2020. 12. 15]

 

여러가지 지표들을 대조해보면서 문제의 원인을 분석하려고 애쓰는 중입니다.

유감스럽게도 해당 이슈가 발생하는 때에 웹서버의 상태는 매우 짱짱하고 슬프게도 리소스가 놀고 있는 상황입니다.

 

의심가는 시나리오는 아래와 같습니다.

 

1. 정말로 어떤 이유건 간에 이상한 URL로 Post를 요청하는 것 (거의 가능성 없지만 혹시 모르니 로그 심어 유저 배포 진행 중)

2. 현재 해당 에러는 산발적으로 일어나고 있으나 간혹 AWS의 ELB가 리디렉션 지표를 스파이크를 내는 구간이 있습니다. 즉 로드밸런서가 웹서버까지 요청을 배분하는 도중 무언가 사단이 났다! 

3. 게임 구조상 Post가 굉장히 빠르게 반복됩니다. 웹 서버든, 휴대폰 디바이스든 TIME_WAIT 된 연결이 너무 많아져서 발생한다! (현재 로드밸런서와 웹서버의 유휴 연결 시간을 조정해서 추이를 보는 중입니다.)

 

트러블 슈팅 너무 괴로워요 흑흑.

 

혹시 모바일 기기의 TIME_WAIT 처리 된 연결에 대해 아시는 분은 조언 부탁드리겠습니다

 

[갱신 / 2020. 12. 21]

명확한 원인 분석을 위해 애썼으나 라이브 서비스에 들어간 게임에서 트러블 슈팅에 길게 기한을 두고 진행하는 것은 참으로 힘든 것 같습니다.

 

기존 클라이언트는 connection 옵션을 close로 두고 사용하고 있었으나 업데이트에서 이를 keep-alive로 변경하여 배포하였으며 17일 오전 1시 21분을 마지막으로 더 이상의 해당 증상이 로그에 잡히지 않는 것으로 확인되었습니다.

 

심증으로는 역시 너무 잦은 빈도의 HTTP 통신에서 모바일 디바이스의 소켓 가용량에 무리를 주지 않았나 싶습니다. 그럼 해당 케이스는 셀프로 클로즈 하도록 하겠습니다.

 

감사합니다.

asked (72 point)
수정됨 , 128 views
안녕하세요! 저도 지금 같은 이유로 멘붕에 빠져 있습니다ㅜㅜ 항상 그런것이 아니고 간혹 unitywebrequest로 통신시 cannot connect to... 에러가 발생합니다

혹시 어떤식으로 해결하셨는지 상세하게 알려주실수 있을까요? 2주째 구글링과 이것저것 시도해보았지만 오늘도 그 문제가 발생했습니다ㅜㅜ

1 답변

0 votes
우수 답변
CLOSE!

 

명확한 원인분석을 못한것이 뭇내 아쉽습니다.
answered (72 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

449 질문
598 answers
585 댓글
57,574 users