• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

서버가 매끄럽게 작동하지 않는거 같습니다.

21.02.17 10:52 작성 조회수 206

0

서버를 키고 바로 클라를 띄웠을 경우에는 잘 실행이 되는데 서버를 켜둔 상태에서 시간이 좀  흐른이후에 클라를 실행하면 제대로 connect가 되지 않는 경우가 빈번이 발생합니다.또 disconnect하는 부분에서도 disconnect로그가 뜨지 않고 정상적이지 않게 종료되는 경우도 마찬가지로 빈번하게 발생합니다.이 이유가 뭔지 잘 모르겠습니다.

답변 5

·

답변을 작성해보세요.

0

말씀하신 케이스라면 Job 누적 문제일 가능성이 높습니다.
Update 함수에서 Push(Update)를 하는데,
틱 조절이 잘못 되어서 Update 를 할때마다
Update Job이 무한 증식하는 문제가 있었던 기억이 있네요.

0

essenger M님의 프로필

essenger M

질문자

2021.02.17

빌드후 클라를 10개 띄운상태에서 게임룸에서 몬스터수를 20마리까지만들고 게임해보니 화살 날라가는 동기화 부분이 거의 이루어 지지않네요 화살이 정지된상태로있다가 날라갑니다 그에비해 이동 동기화는 아주 매끄럽게 진행됩니다. 서버라는게 진짜 어렵네요 ㅠㅠ 아무쪼록 감사합니당

0

essenger M님의 프로필

essenger M

질문자

2021.02.17

먼저 답변해주셔서 감사합니다. 서버를 키고난후 한 3~4분정도 후에 연결할때에 소켓에러가 빈번하게  나타나더라구요 보통 바로 실행하면 잘 돌아가긴합니다.클라를 몇백 단위로 붙이진 않았고 계속 2개 3개 4개 5개 단위로 테스트하고있는데 잘될때가 있고 안될때가 있네요 특히 어떤 클라가 연결을 끊었을때 서버에서 바로 로그가 나오지않고 다른 클라를 연결할때에 이전 연결을 끊었던 클라의 연결끊김 로그가 발생합니다.만약 클라가 연결을 끊어서 서버에 로그가 나오지 않는상태로 두었을때 서버가 먹통이 되는 경우도 1번 있었습니다.jobqueue 쪽에서 디버깅해보면서 계속 테스트 해보겠습니다.

0

아 그리고 다른 케이스를 하나 더 본 적이 있는데
만약 클라가 몇 없는데 발생했다면, 일감 횟수를 로그로 찍어봐야 합니다.
JobQueue에서 Push하는 컨텐츠 로직 쪽에서 문제일 수도 있습니다.
AI 등의 Update쪽 코드 로직 문제로
현재 Update가 마치지 않았는데 새로 Job을 Push하다가
Job이 무한 증설해서 그럴 수도 있습니다.

0

클라를 몇개 붙게 하셨는지가 관건입니다.
만약 진짜고 몇백 단위로 더미를 붙였다면 높은 확률로 문제가 될 수 있습니다.
Part7 기준으로는 아직 분할이 되지 않은 GameRoom이라
클라를 조금만 붙여도 기하급수적으로 일감과 패킷이 증가합니다. (Broadcasting이 N^2이다 보니)

처리할 수 있는 일감보다, 늘어나는 일감이 많으면
새로 추가하는 일감은 실행되지 않게 되는데
그럴 경우 Connect 요청도 무시됩니다.

클라에서는 지속적으로 서버에 요청을 보내는데,
서버에서 처리를 못하면 Send/Recv 버퍼가 가득 차게 되면서 결국 패킷 분실 및 먹통 상태가 됩니다.
통상적으로 Send/Recv 를 할 때 실시간으로 보내는 패킷량과 쌓인 패킷량을 체크하면서
너무 말도 안되고 쌓인다 싶으면 강제로 연결을 끊어주는 예외처리가 들어가야 합니다.
그리고 나중에 가면 Ping 패킷을 주기적으로 보내서
제 때 응답이 안 오면 킥하는 기능도 같이 들어가야 합니다.