안녕하세요,많은 CPU (VB.NET)를 사용하는 Windows 서비스
Google 서버에 하루에 한 번 TCP 패킷을 보내는 장치가 현장에 있습니다. 나는 그 패킷을 끊임없이 경청하는 Windows 서비스를 가지고있다. 이 서비스의 코드는 MSDN 예제 (Asynchronous Server Socket Example)의 카본 카피입니다. 구현시 유일한 차이점은 아무 것도 보내지 않습니다. 단지 데이터를 받아 처리하고 소켓을 닫습니다. 이 서비스는 위에서 링크 된 코드를 즉시 처리하는 스레드를 시작합니다.
문제점은 내가 실행중인 서버의 작업 관리자로 이동했을 때 서비스가 항상 모든 CPU를 사용하는 것으로 보입니다 (99라고 표시됨). IT 부서에이를 통보 받았습니다. 하지만 그 CPU주기가 사용되는 이유를 모르겠다. 스레드가 allDone.WaitOne()에서 막 그냥 차단합니까?
나는 또한 동일한 코드로 콘솔 애플리케이션을 만들었고 데이터가 처리 될 때만 CPU를 사용하여 잘 작동합니다. 각각의 경우에 작업이 매번 성공적으로 완료되지만 서비스 구현은 매우 비효율적 인 것처럼 보입니다. 내가 여기서 뭘 잘못 할 수 있니?
감사합니다.
그 샘플에는 CPU를 사용하는 것이 없으므로 코드를 직접 게시해야합니다. 또한 디버거를 사용하여 서비스에 연결하고 Ctrl + F5를 누르는 것이 좋습니다. 그러면 실행이 중단되고 즉시 실행중인 코드가 표시됩니다. –