이 문서에서는 "HTTP 오류 503" 오류가 발생하는 문제 해결에 대한 정보를 제공합니다. 서비스를 사용할 수 없습니다." 클라우드 서비스 애플리케이션에 액세스할 때입니다.
원래 제품 버전: API Management 서비스
원래 KB 번호: 4464854
참고 항목
Azure Cloud Service 문제 해결 시리즈의 문서를 참조하세요. 이 시나리오는 랩의 다섯 번째 시나리오입니다. 이에 따라 슈퍼 변환기 애플리케이션에 대한 랩 설정 지침을 따라 문제를 다시 만들어야 합니다.
증상
웹 역할 'SuperConvertor'가 실행 중 상태이지만 클라우드 서비스 애플리케이션 URL()http://cloudservicelabs.cloudapp.net/
을 검색하는 동안 HTTP 오류 503 응답이 표시됩니다. 역할 인스턴스를 다시 부팅하거나 이미지로 다시 설치해도 문제가 해결되지 않습니다.
Service Unavailable
HTTP 오류 503 합니다. 서비스를 사용할 수 없습니다.
문제 해결 단계
애플리케이션에서 50배 오류가 발생하면 일반적으로 서버 쪽에서 오류가 발생합니다. 503 Service Unavailable
서버 오류 응답 코드는 서버가 요청을 처리할 준비가 되지 않음을 나타냅니다. 새로 배포된 클라우드 서비스 애플리케이션이 갑자기 이 오류를 throw하기 시작한 이유를 고려해야 합니다. 애플리케이션이 충돌하고 있나요? 요청이 IIS 서버에 도달합니까? 서버 부하가 높은가요?
먼저 온-프레미스 IIS 서버를 확인합니다. RDP를 사용하여 웹 역할 인스턴스에 연결하고 애플리케이션을 로컬로 찾아볼 수 있습니다. 사이트를 로컬로 검색하기 전에 애플리케이션 및 시스템 이벤트 뷰어 로그를 확인하여 IIS ApplicationPool 충돌 또는 기타 애플리케이션 관련 예외의 가능성을 부정합니다.
다음으로, 아래에 C:\Resources\directory\{Deployment ID}.SuperConvertor.DiagnosticStore\LogFiles\Web
있는 IIS 로그를 확인하여 하위 상태 코드, 요청을 실행하는 데 걸린 시간 등과 같은 HTTP 503 오류에 대한 자세한 정보를 얻을 수 있는지 확인합니다.
생성된 로그가 없으면 요청이 IIS에 전혀 도달하지 않음을 의미합니다. IIS 아키텍처에 따라 HTTP.sys 네트워크에서 HTTP 요청을 수신 대기하고 처리를 위해 IIS에 요청을 전달한 다음 클라이언트 브라우저에 처리된 응답을 반환합니다. 기본적으로 IIS는 HTTP 및 HTTPS 요청을 수신 대기하는 프로토콜 수신기로 HTTP.sys 제공하며 HTTP.sys 수준의 오류는 이 디렉터리에 D:\Windows\System32\LogFiles\HTTPERR
기록됩니다. 따라서 HTTPErr 로그에서 찾을 수 있는 항목을 살펴보겠습니다.
#Software: Microsoft HTTP API 2.0
#Version: 1.0
#Date: 2018-08-13 03:12:38
#Fields: date time c-ip c-port s-ip s-port cs-version cs-method cs-uri streamid sc-status s-siteid s-reason s-queuename
2018-08-13 03:25:22 293.217.138.127 12052 10.1.2.5 80 HTTP/1.1 GET / - 503 - N/A -
2018-08-13 03:25:22 293.217.138.127 20463 10.1.2.5 80 HTTP/1.1 GET /favicon.ico - 503 - N/A -
위의 로그가 표시되면 HTTP 503이 HTTP.sys 수준에서 throw되고 클라이언트 요청은 IIS에 도달하지 않고 자체적으로 거부됩니다. 이제 IIS에서 사이트를 로컬로 찾아보고 어떻게 되는지 확인합니다. 오류가 발생할 수 있습니다. 이 페이지는 표시할 수 없습니다. 알 수 있는 한 가지는 IIS 웹 사이트에 아래와 같은 바인딩이 있다는 것입니다. 즉, 이 특정 웹 사이트에 액세스하려면 사용자 지정 도메인 이름(www.cloudservicelabs.com
)을 통해 액세스해야 합니다.
IP 주소 | 포트 | 호스트 헤더 |
---|---|---|
10.1.2.5 | 80 | www.cloudservicelabs.com |
웹 사이트는 바인딩을 사용하여 모든 클라이언트에서 액세스합니다. 웹 사이트에 대한 일반적인 바인딩은 IP:Port:HostHeader 형식입니다. 이 사이트에 연결할 수 있는 방법을 서버에 알려주는 메커니즘입니다. 다음 질문은 이 사용자 지정 호스트 이름이 어디에서 왔는지에 대한 것입니다.
ServiceDefinition.csdef는 웹 역할에 대한 바인딩을 구성할 수 있는 위치이며, 애플리케이션에 대해 다음과 같이 표시될 수 있습니다.
<WebRole name="SuperConvertor" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="www.cloudservicelabs.com"/></Bindings>
</Site>
</Sites>
실제 시나리오에서 사용자 지정 호스트 이름을 통해 클라우드 서비스 애플리케이션에 액세스하려면 클라우드 서비스 VIP에 해당하는 이 호스트 헤더에 대해 DNS를 구성해야 합니다. 지금은 Binding 요소에서 hostHeader 특성을 삭제하고 클라우드 서비스 솔루션을 다시 배포하여 문제를 해결할 수 있습니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.