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

4513zxc님의 프로필 이미지
4513zxc

작성한 질문수

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

CPU를 과도하게 점유하면서 멈추는 현상

해결된 질문

작성

·

47

0

안녕하세요

 

쓰레드 배분 강의 소스 코드부터 현재 강의까지, 서버가 정상적으로 동작하지 않는 현상이 있어 확인 요청드립니다.

DBThreadJob 메서드에서 _executeQueue가 비어 있을 때 루프가 무한히 반복되면서 CPU를 과도하게 점유하는 문제가 있는 것 같습니다.

저는 macOS에서 서버를 실행 중인데, Windows와의 CPU 스케줄링 차이로 인해 발생하는 문제로 추측됩니다.

 

확인해주시면 감사하겠습니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
4513zxc님, macOS 환경에서 쓰레드가 무한 반복으로 인해 CPU를 과도하게 점유하는 문제를 겪고 계시는군요. 이러한 문제가 발생하는 것은 주로 쓰레드가 매우 빠른 루프를 도는 구조에서 흔히 나타나는 현상입니다. DBThreadJob 메서드에서 _executeQueue를 체크하면서 대기 시간이 없이 while 루프가 계속 돌게 되는 경우 CPU 사용량이 급증할 수 있습니다.

비슷한 문제와 관련된 기존 질문을 참조하시어 해결 방법의 힌트를 얻으실 수 있을 것입니다.

  1. 맥북에서 비쥬얼 스튜디오 사용중인데 아래와 같은 결과가 나타나지 않습니다. 무슨 문제일까요?
    이 질문에서는 Windows와 macOS에서의 쓰레드와 관련된 이슈에 대해 다루고 있습니다. 기본적으로 Mac의 Visual Studio에서 발생할 수 있는 쓰레드풀 문제와 이를 보완하기 위한 업데이트 또는 패치 확인을 권장하고 있습니다.

쓰레드 루프가 과도하게 CPU를 사용하지 않게 하기 위해서는 다음과 같은 방안을 고려해볼 수 있습니다:
- 쓰레드 루프 내부에 적절한 Thread.Sleep() 메서드를 추가하여 루프 실행의 빈도를 줄입니다.
- _executeQueue가 비어 있는 경우에 대비하여 대기 상태로 전환하는 메커니즘을 구현하는 것도 좋습니다.

문제가 계속 지속되면 Visual Studio for Mac의 업데이트 확인 또는 .NET Core의 최신 버전으로 업데이트하는 것을 고려해 보세요. 또한, 조언드린 방법들을 활용하는 것이 문제 해결에 도움이 될 수 있습니다.

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

4513zxc님의 프로필 이미지
4513zxc
질문자

저는 Thread.Sleep()을 while 다음에 배치하여 문제를 해결했습니다.

이 문제의 원인이 Sleep 위치라고 생각되어, 다른 수강생 분들께도 이런 문제가 발생할 수 있기 때문에 도움이 될까 하여 댓글로 공유드립니다.

 

감사합니다.

 

4513zxc님의 프로필 이미지
4513zxc

작성한 질문수

질문하기