2012-05-19 7 views
5

클라이언트의 연결을 처리하기 위해 많은 스레드가 실행되는 작업자 역할이 있습니다. 부하 테스트 중, 우리는 그 역할이 무의미 해지고 다시 시작할 때까지 그 상태를 유지하는 것으로 나타났습니다. Visual Studio 디버거에서 (활성 프로세스를 일시 중지하여) 대기중인 많은 스레드를 볼 수 있지만 일시 중지되지 않은 경우 아무런 작업도 수행되지 않습니다. 그 상태로 남아있는 역할의 원인을 어떻게 알 수 있습니까?Windows Azure 역할 응답 없음

답변

6

로드 테스트를 수행 할 때 작업자 역할과 관련하여 문제가 발생하기 시작했다고 언급 했으므로 처음에는 역할이 제대로 작동했다고 가정하는 것이 안전합니다. 이는 문제가 특정 플랫폼이 아닌 특정 응용 프로그램이라는 결론에 이르게합니다. 당신이 당신의 윈도우 Azure VM에서 일부 진단 정보를 얻을 수있는 방법은 두 가지가 있습니다

  • 옵션 1 (기본) : 당신의 푸른 VM에 무슨 일이 일어나고 있는지, 당신이 정말로으로 윈도우 Azure 진단을 추가 할 필요가 확인하기 위해 성능 카운터, 메모리 세부 정보, 역할 프로세스 상태 및 기타 데이터를 Azure VM에서 Azure Storage로 이동하여 오프라인으로 분석 할 수 있습니다.

  • 옵션 2 : Azure VM에 대한 RDP 액세스를 활성화 한 다음 Azure VM에 로그인하고 Azure VM에 Perfmon, Process Explorer 및 기타 상태 모니터링 도구를 설치하고 현재 상황을 모니터링하십시오.

  • 옵션 3 (마지막 리조트) : RDP 당신의 푸른 VM과 WinDBG로를 설치하고 작업자 역할은 작동이 중단 때와 같은 상태에서 호스트 프로세스

를 디버깅이 정말 좋습니다 것입니다 어떤 사람에게 :

  1. CPU, 메모리 압력, 스레드 목록을 찾고 차단 된 스레드와 이유를 찾을 수 있습니다.
  2. 호스트 작업자 프로세스 상태를 확인합니다. 지난 시간에 시작했을 때 어떤 이유로 인해 재활용되고 있습니까? Azure VM에서 실행되는 시간입니다.
  3. "ProgramEntryPoint"로 설정된 별도의 프로세스가있는 경우 작업자 역할, 건강 상태 확인
  4. 응용 프로그램의 이벤트 로그를 단서에 대한 시스템 수준에서 확인하십시오. Worker 역할에서 나는 응용 프로그램 이벤트 로그에 뭔가가있을 것이라고 생각하지는 않지만 보길 가치가 있습니다.
  5. 프로세스 모니터를 사용하여 몇 가지 프로세스를 모니터링하고 로그를 수집하여 프로세스가 마지막 상태 였는지, 무엇이 액세스했는지, 다른 문제로 인해 굶어 죽었는지 확인하십시오.

결론은 Azure VM의 근본 원인을 파생 시스템에서 수행하는 것과 거의 같습니다.

+0

정말 고마워. 처음에는이 문제가 Azure의 작업자 역할에 대해서만 제시되었지만 테스트 하니스를 일부 수정하면 개발 과정에서 시작되었습니다. 우리는 : * 원격 액세스/Azure 진단 설정 * 응용 프로그램 특정보고에 대한 성능 카운터 및 사용자 지정 이벤트 로그 설정 비동기 작업이 수행되는 곳이 많습니다. 우리는 처리되지 않은 예외가 발생했다고 추측하지만 그 발견하기가 어렵습니다. – Irwin

+0

어떤 Azure SDK를 사용하고 계십니까? Azure에서 임의의 문제를 일으킬 수있는 이전 SDK의 Remote Forwarder에는 몇 가지 문제가 있지만 SDK 1.6은 매우 견고합니다.앱으로 RDP 액세스 및 Azure 진단을 제거하면 문제가 계속 발생합니까? – AvkashChauhan