인프런 커뮤니티 질문&답변

김철수님의 프로필 이미지
김철수

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

패킷 모아 보내기

테스트 메모리 릭킹 관련 질문

작성

·

360

0

아래와 같은 테스트를 진행했고 이는 강의코드에도 유사하게 발생할 것으로 보입니다.

 

  1. 서버 컨텐츠단에서 패킷 모아 보내기 기능까지 구현

  2. 500개의 더미 클라이언트가 S_Chat 을 송신

  3. 서버는 비주얼 스튜디오에서 디버그모드로 구동

  4. 더미클라이언트는 exe모드로 실행과 종료를 반복

 

이때 클라이언트의 connect, disconnect가 잦아지면서 서버의 메모리 점유율이 내려가지 않는 현상이 궁금해서 그러는 것이지, 고쳐달라고 떼쓰는게 아닙니다.

 

이런 현상은 강의 코드에서도 발생할 것으로 보이는데요. 혹시 알고 계신 이유가있다면 그것만 말씀해주시면 됩니다.

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

강의 방식에서 SendBuffer를 아주 큰 조각 (Chunk)에서 시작해서
잘라서 사용하는 방식을 채택하는데
그러면 하나라도 회수가 안 되면 전체 Chunk가 해제 안 되는 일이 발생합니다.
높은 확률로 그쪽 문제이구요. 해결 방법은 Chunk를 사용하지 않고
SendBuffer를 별개로 따로 만드는데 나중에 Part7부턴 그렇게 수정합니다.

또한 아직 클라 연결 끊김을 감지해서 알아서 처리하는 일종의 Ping/Pong 패킷이 없는데
그러면 좀비처럼 연결은 끊겼지만 서버에서 인식을 못해 처리가 되지 않은 경우도 생길 수 있습니다.

김철수님의 프로필 이미지
김철수
질문자

ping pong 패킷에 관한 내용은 Part7이나 9에 있나요?

Rookiss님의 프로필 이미지
Rookiss
지식공유자

대단한건 아니고 주기적으로 살아있는지 확인하는 패킷입니다.

김철수님의 프로필 이미지
김철수
질문자

감사합니다

김철수님의 프로필 이미지
김철수

작성한 질문수

질문하기