강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của lds37942177
lds37942177

câu hỏi đã được viết

[Series Phát triển Game MMORPG với C# và Unity] Part4: Game Server

JobQueue #2

더미 클라이언트 수에 따른 OnDisconnect 발생

Đã giải quyết

Viết

·

53

·

Đã chỉnh sửa

0

상황은 다음과 같습니다.

100개의 클라이언트 생성했을 때까지는 문제 없는데, 그 보다 더 많은 클라이언트 (ex 200, 500)개로 늘렸을 때 문제입니다.

현재 500개까지 실행했을 때도 500개에대한 OnConnected가 호출되었습니다.

그러다 시간이 좀 지나면 클라이언트와의 연결이 점차 끊겨서 OnDisconnected가 발생합니다.

 

디버그 했을 때 ClientSession의 OnDisconnected가 호출되었고 스택을 확인했을 때 ClientSession의 OnReceiveCompleted에서 args.BytesTransferred가 0이어서 Disconnect()가 호출되더라구요.

컴퓨터 스펙이 라이젠 7 9800X3D에 렘 96기가여서 컴퓨터 성능 문제는 아닌거같고 뭔가 놓친게 있는거같은데 잘 모르겠네요..

 

image.png

 

C#unity네트워크

Câu trả lời 2

0

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

너무 한 번에 몰리지 않게 배분해보세요.
대부분의 경우 정말 입장 처리가 불가능한데 너무 몰려서 발생하는 문제입니다.
(특별히 버그라고 보긴 어렵고요)

lds37942177님의 프로필 이미지
lds37942177
Người đặt câu hỏi

답변 감사드리고 원인을 찾았습니다!

강의 따라가느라 코드 잘 못 작성한 부분이 있었네요 ㅠㅠ

강사님의 코드랑 비교하면서 다시 확인해봤는데 SendBuffer의 Close 메소드에서 _usedSize += usedSize; 를 해야되는데 _usedSize = usedSize; 라고 작성해놨네요.

0

안녕하세요, 인프런 AI 인턴입니다. 단짠커피님.

현재 다수의 클라이언트를 연결했을 시 일부가 연결을 잃는 문제를 겪고 계신 것 같습니다. args.BytesTransferred 가 0으로 나타나는 경우는 일반적으로 연결이 끊어졌을 때 발생합니다. 네트워크 프로그래밍에서 이와 같은 문제는 여러 원인이 있을 수 있습니다:

  1. 네트워크 대역폭 및 성능: 컴퓨터 성능은 충분하지만, 네트워크 대역폭이 제한되어 있거나 특정 순간에 네트워크 부하가 클 경우 문제가 발생할 수 있습니다. 클라이언트가 데이터를 송수신하는 방식이나 빈도를 조절해보세요.

  2. 서버 및 클라이언트 코드: 코드 내에서 데이터 송수신이 올바르게 처리되고 있는지 확인하세요. 예를 들어, 동시성 문제나 코드에 의한 시간 초과로 인해 연결이 끊기는 경우가 있을 수 있습니다. 이러한 문제는 서버 및 클라이언트 간의 데이터 처리 로직을 점검해봐야 합니다.

  3. OS 제한 사항: 운영 체제나 네트워크 스택에서 다수의 TCP 연결에 대한 제한이 설정되어 있을 가능성도 존재합니다. 이를 변경하거나 확인할 수 있는 방법에 대해서도 조사해 보세요.

  4. 로그 분석 및 디버깅: 로그를 통해 어떤 시점에서 연결이 끊어지는지, 어떤 상태인지에 대한 정보를 충분히 수집하는 것이 중요합니다. 잘못된 메모리 액세스나 잘못된 조건문으로 인해 예기치 않은 동작이 발생할 수 있습니다.

비슷한 내용을 다룬 기존 질문 링크를 제공합니다. 해당 링크들을 참고하여 유사한 문제에 대한 해결책을 찾아보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của lds37942177
lds37942177

câu hỏi đã được viết

Đặt câu hỏi