기술 자료: 820729
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 HTTP(하이퍼텍스트 전송 프로토콜) API의 오류 로깅 기능을 설명합니다.

HTTP 기반 응용 프로그램에서 발생하는 오류 중 일부는 처리를 위해 응용 프로그램으로 다시 전달되는 대신 HTTP API에서 자동으로 처리됩니다. 이 동작은 이러한 오류가 너무 많이 발생하여 이렇게 하지 않으면 이벤트 로그나 응용 프로그램 처리기에서 다룰 수 있는 범위를 초과하기 때문에 발생합니다.

아래의 항목은 HTTP API 오류 로깅의 다양한 측면에 대해 설명합니다.
  • HTTP API 오류 로깅 구성
    레지스트리 설정은 HTTP API 로그 오류, 허용되는 최대 로그 파일 크기 및 로그 파일 위치를 제어합니다.
  • HTTP API 오류 로그 형식
    HTTP API는 W3C(World Wide Web Consortium) 로그 파일 규칙을 준수하는 로그 파일을 만듭니다. 따라서 표준 도구를 사용하여 이 로그 파일을 구문 분석할 수 있습니다. 그러나, W3C 로그 파일과 달리 HTTP API 로그 파일에는 열 이름이 없습니다.
  • HTTP API가 기록하는 오류 유형
    HTTP API는 다양한 일반 오류를 기록합니다.

추가 정보

HTTP API 오류 로깅 구성

Microsoft에서 사용자를 위해 HTTP API 오류 로깅을 구성할 수 있도록 하려면 "해결 지원" 절로 이동하십시오. HTTP API 오류 로깅을 직접 구성하려면 "직접 해결" 절로 이동하십시오.

해결 지원



이 문제를 자동으로 해결하려면 Fix it 단추나 링크를 클릭합니다. 파일 다운로드 대화 상자에서 실행을 클릭하고 Fix it 마법사의 단계를 따릅니다.

Disable HTTP API error logging
Microsoft Fix it 50635
Enable HTTP API error logging
Microsoft Fix it 50634


참고
  • 이 마법사는 영어로만 제공될 수도 있습니다. 그러나 다른 언어 버전의 Windows에서도 자동 해결 기능을 사용할 수 있습니다.
  • 현재 문제가 있는 컴퓨터에서 작업하고 있지 않은 경우 Fix it 솔루션을 플래시 드라이브 또는 CD에 저장한 후 문제가 있는 컴퓨터에서 실행하십시오.



직접 해결

HTTP \Parameters 키의 세 가지 레지스트리 값이 HTTP API 오류 로깅을 제어합니다. 이들 키는 다음 레지스트리 키에 있습니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
참고 이후 버전의 Microsoft Windows 운영 체제에서는 구성 값의 위치와 형식이 바뀔 수 있습니다.

레지스트리 값을 변경하고, 이들이 포함되어 있는 로그 파일과 폴더를 보거나 수정하려면 Administrator/Local System 자격 증명이 있어야 합니다.

레지스트리 값의 구성 정보는 HTTP API 드라이버가 시작될 때 읽혀집니다. 따라서 설정을 변경한 경우에 새 값을 읽으려면 드라이버를 중지했다가 다시 시작해야 합니다. 이렇게 하려면 다음 콘솔 명령을 입력하십시오.
net stop http
net start http
로그 파일의 이름을 지정하는 데 다음과 같은 명명 규칙이 사용됩니다.
httperr + sequence number + .log
예: httperr4.log
로그 파일은 ErrorLogFileTruncateSize 레지스트리 값에서 지정하는 최대 크기에 도달하면 새로 작성됩니다. 최대 크기는 1MB 이상이어야 합니다.

오류 로깅의 구성이 올바르지 않거나, HTTP API가 로그 파일에 기록하는 동안 오류가 발생하면 HTTP API는 이벤트 로깅을 사용하여 오류 로깅이 발생하지 않음을 관리자에게 알립니다.

아래의 표는 레지스트리 구성 값을 설명합니다.
표 축소표 확대
레지스트리 값설명
EnableErrorLoggingTRUE로 설정하면 오류 로깅을 사용 가능하게 설정하고 FALSE로 설정하면 오류 로깅을 해제할 수 있는 DWORD. TRUE가 기본값입니다.
ErrorLogFileTruncateSize오류 로그 파일의 최대 크기를 바이트 단위로 지정하는 DWORD. 기본값은 1MB(0x100000)입니다.

참고 기본값보다 작은 값은 지정할 수 없습니다.
ErrorLoggingDirHTTP API가 해당 로깅 파일을 저장하는 폴더를 지정하는 문자열.

HTTP API는 지정된 폴더에서 HTTPERR이라는 하위 폴더를 만들어서 여기에 로그 파일을 저장합니다. 이 하위 폴더와 로그 파일은 같은 권한 설정을 받습니다. Administrator 및 Local System 계정은 모든 권한을 갖습니다. 그 밖의 다른 사용자는 액세스할 수 없습니다.

다음은 레지스트리에서 폴더를 지정하지 않은 경우에 사용되는 기본 폴더입니다.
%SystemRoot%\System32\LogFiles

참고 ErrorLoggingDir 문자열 값은 정규화된 경로여야 합니다. 그러나, %SystemRoot%를 포함할 수도 있습니다. 네트워크 드라이브 또는 네트워크 공유를 사용할 수 없습니다.

HTTP API 오류 로그 형식

일반적으로 HTTP API 오류 로그 파일은 열 머리글이 없다는 점을 제외하고 W3C 오류 로그와 같은 형식을 갖고 있습니다. HTTP API 오류 로그 파일은 각 행에 하나씩 오류를 기록합니다. 필드가 특정 순서로 나타납니다. 단일 공백 문자(0x0020)가 각 필드를 이전 필드와 분리합니다. 각 필드에서 공백 문자, 탭 및 인쇄할 수 없는 제어 문자 대신 더하기 기호(0x002B)가 표시됩니다.

아래의 표는 오류 로그 레코드에서 필드와 이들 필드의 순서를 나타냅니다.
표 축소표 확대
필드설명
날짜날짜 필드는 W3C 형식을 따릅니다. 이 필드는 UTC(Coordinated Universal Time)를 기준으로 합니다. 날짜 필드는 항상 YYYY-MM-DD 형식으로 된 10개의 문자입니다. 예를 들어, 2003년 5월 1일은 2003-05-01로 표시됩니다.
시간시간 필드는 W3C 형식을 따릅니다. 이 필드는 UTC를 기준으로 합니다. 시간 필드는 항상 MM:HH:SS의 형식으로 된 8개의 문자입니다. 예를 들어, 오후 5시 30분(UTC)은 17:30:00으로 표시됩니다.
클라이언트 IP 주소영향을 받는 클라이언트의 IP 주소입니다. 이 필드의 값은 IPv4 주소나 IPv6 주소 중 하나가 될 수 있습니다. 클라이언트 IP 주소가 IPv6 주소인 경우 ScopeId 필드도 주소에 포함됩니다.
클라이언트 포트영향을 받는 클라이언트의 포트 번호입니다.
서버 IP 주소영향을 받는 서버의 IP 주소입니다. 이 필드의 값은 IPv4 주소나 IPv6 주소 중 하나가 될 수 있습니다. 서버 IP 주소가 IPv6 주소인 경우 ScopeId 필드도 주소에 포함됩니다.
서버 포트영향을 받는 서버의 포트 번호입니다.
프로토콜 버전사용 중인 프로토콜의 버전입니다.

프로토콜 버전을 확인할 수 있도록 구문 분석되지 않은 연결에는 하이픈(0x002D)이 빈 필드에 대한 자리 표시자로 사용됩니다.

구문 분석된 주 버전 번호나 부 버전 번호가 10 이상인 경우에는 버전이 HTTP/?.?로 기록됩니다.
Verb마지막으로 구문 분석된 요청이 전달하는 동사 상태입니다. 알 수 없는 동사가 포함되지만, 255바이트를 초과하는 동사는 이 길이로 잘립니다. 동사를 사용할 수 없는 경우에는 하이픈(0x002D)이 빈 필드에 대한 자리 표시자로 사용됩니다.
CookedURL + 쿼리URL과 이 URL과 연관된 쿼리는 물음표(0x3F)로 분리된 하나의 필드로 기록됩니다. 이 필드는 4096바이트의 길이 제한에서 잘립니다.

이 URL이 구문 분석("cooked")된 경우 로컬 코드 페이지 변환에서 기록되어 유니코드 필드로 처리됩니다.

이 URL이 로깅 시 구문 분석("cooked")되지 않은 경우 유니코드 변환 없이 정확하게 복사됩니다.

HTTP API가 이 URL을 구문 분석하지 못하면 하이픈(0x002D)이 빈 필드에 대한 자리 표시자로 사용됩니다.
프로토콜 상태프로토콜 상태는 999를 초과할 수 없습니다.

요청에 대한 응답의 프로토콜 상태가 사용 가능한 경우 이 필드에 기록됩니다.

프로토콜 상태가 사용 불가능한 경우에는 하이픈(0x002D)이 빈 필드에 대한 자리 표시자로 사용됩니다.
사이트 ID이 버전의 HTTP API에서는 사용되지 않습니다. 이 필드에는 자리 표시자 하이픈(0x002D)이 항상 나타납니다.
원인 문구이 필드에는 기록 중인 오류의 유형을 나타내는 문자열이 나와 있습니다. 이 필드는 빈 상태로 있을 수 없습니다.
대기열 이름이것은 요청 대기열 이름입니다.
아래의 예제 행은 HTTP API 오류 로그에서 가져온 것입니다.
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 ? ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 ? Hostname 2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S 2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond

HTTP API가 기록하는 오류 유형

HTTP API는 잘못 처리된 클라이언트에 대한 오류 응답, 연결 시간 초과, 고아 요청 및 삭제된 연결을 기록합니다.

아래의 목록은 HTTP API가 기록하는 오류 유형을 나타냅니다.
  • 클라이언트에 대한 응답 HTTP API는 클라이언트에 대한 오류 응답(예: 마지막으로 받은 요청에서 구문 분석 오류로 인해 발생한 400 오류)을 보냅니다. HTTP API는 오류 응답을 보낸 후 연결을 종료합니다.
  • 연결 시간 초과 HTTP API가 연결 시간을 초과합니다. 연결 시간이 초과될 때까지도 요청이 계속 보류 중이면 이 요청은 오류 로그에서 연결에 대한 자세한 정보를 제공하는 데 사용됩니다.
  • 고아 요청 대기열에 사용자 모드 프로세스로 라우팅되는 요청이 아직 남아 있을 때 프로세스가 예기치 않게 종료됩니다. HTTP API는 오류 로그에 고아 요청을 기록합니다.
특정 오류 형식은 항상 각 오류 행의 마지막 필드로 나타나는 원인 문구 문자열에서 지정됩니다. 아래의 표는 HTTP API 원인 문구를 나타냅니다.
표 축소표 확대
원인 문구설명

AppOffline"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 응용 프로그램 오류로 인해 응용 프로그램이 오프라인 상태가 되었기 때문에 서비스를 사용할 수 없습니다.
AppPoolTimer"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 응용 프로그램 풀 프로세스가 사용 중이어서 요청을 처리할 수 없기 때문에 서비스를 사용할 수 없습니다.
AppShutdown"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 응용 프로그램이 관리자 정책에 대한 응답으로 자동으로 종료되기 때문에 서비스를 사용할 수 없습니다.
BadRequest요청을 처리하는 동안 구문 분석 오류가 발생했습니다.
Client_Reset요청이 작업자 프로세서에 할당되기 전에 클라이언트와 서버 간 연결이 닫혔습니다. 이 동작의 가장 일반적인 원인은 클라이언트가 서버와의 연결을 미리 닫는 것입니다.
Connection_Abandoned_By_AppPool응용 프로그램 풀의 작업자 프로세스가 핸들을 닫아서 보류 중인 요청의 연결을 끊거나 예기치 않게 종료되었습니다.
Connection_Abandoned_By_ReqQueue응용 프로그램 풀의 작업자 프로세스가 핸들을 닫아서 보류 중인 요청의 연결을 끊거나 예기치 않게 종료되었습니다. Windows Vista 및 Windows Server 2008에만 해당됩니다.
Connection_Dropped서버가 최종 응답 패킷을 전송하기 전에 클라이언트와 서버 간 연결이 닫혔습니다. 이 동작의 가장 일반적인 원인은 클라이언트가 서버와의 연결을 미리 닫는 것입니다.
Connection_Dropped_List_Full클라이언트와 서버 간의 삭제된 연결 목록이 꽉 찼습니다. Windows Vista 및 Windows Server 2008에만 해당됩니다.
ConnLimit"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 사이트 수준 연결 한계에 도달했거나 초과했기 때문에 서비스를 사용할 수 없습니다.
Connections_Refused커널 NonPagedPool 메모리가 20MB 아래로 떨어지고 http.sys가 새 연결 수신을 중단했습니다.
사용 안 함"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 관리자가 응용 프로그램을 오프라인 상태로 만들었기 때문에서 서비스를 사용할 수 없습니다.
EntityTooLarge엔터티가 허용된 최대 크기를 초과했습니다.
FieldLength필드 길이 한계를 초과했습니다.
Forbidden구문 분석 동안 금지된 요소나 시퀀스가 발생했습니다.
머리글머리글에서 구문 분석 오류가 발생했습니다.
Hostname호스트 이름을 처리하는 동안 구문 분석 오류가 발생했습니다.
내부내부 서버 오류가 발생했습니다(HTTP 오류 500).
Invalid_CR/LF잘못된 캐리지 리턴이나 줄 바꿈이 발생했습니다.
LengthRequired필수 길이 값이 없습니다.
N/A"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 메모리 할당 실패 같은 내부 오류가 발생했기 때문에 서비스를 사용할 수 없습니다.
N/I알 수 없는 전송 인코딩으로 인해 "구현되지 않음" 오류가 발생했거나(HTTP 오류 501), "서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503).
숫자숫자를 처리하는 동안 구문 분석 오류가 발생했습니다.
Precondition필수 전제 조건이 없습니다.
QueueFull"서비스 사용할 수 없음" 오류가 발생했습니다(HTTP 오류 503). 응용 프로그램 요청 대기열이 꽉 찼기 때문에 서비스를 사용할 수 없습니다.
RequestLength요청 길이 한계를 초과했습니다.
Timer_AppPool서버 응용 프로그램이 대기열에서 가져와 요청을 처리할 때까지 요청이 응용 프로그램 풀 대기열에서 너무 오랫동안 대기했기 때문에 연결이 만료되었습니다. 이 제한 시간은 ConnectionTimeout입니다. 기본적으로 이 값은 2분으로 설정됩니다.
Timer_ConnectionIdle연결이 만료되어 계속 유휴 상태로 있습니다. 기본 ConnectionTimeout 시간은 2분입니다.
Timer_EntityBody요청 엔터티 본문이 도착하기 전에 연결이 만료되었습니다. 요청에 엔터티 본문이 있는 경우 HTTP API는 Timer_EntityBody 타이머를 켭니다. 처음에는 이 타이머의 제한이 ConnectionTimeout 값(보통 2분)으로 설정됩니다. 이 요청에서 다른 데이터 표시가 수신될 때마다 HTTP API는 타이머를 재설정하여 연결에 추가적인 2분(또는 ConnectionTimeout에 지정된 시간)을 더 제공합니다.
Timer_HeaderWait요청에 대한 머리글 구문 분석을 수행하는 데 기본 제한인 2분보다 많이 소요되었기 때문에 연결이 만료되었습니다.
Timer_MinBytesPerSecond클라이언트가 적절한 속도로 응답을 받지 못했기 때문에 연결이 만료되었습니다. 응답 전송 속도가 기본값인 초당 240바이트보다 느려졌습니다. 이 속도는 MinFileBytesPerSec 메타베이스 속성으로 제어할 수 있습니다.
Timer_ReqQueue서버 응용 프로그램이 대기열에서 요청을 가져올 때까지 요청이 응용 프로그램 풀 대기열에서 너무 오랫동안 대기했기 때문에 연결이 만료되었습니다. 이 제한 시간은 ConnectionTimeout입니다. 기본적으로 이 값은 2분으로 설정됩니다. Windows Vista 및 Windows Server 2008에만 해당됩니다.
Timer_Response예약됨. 현재 사용되고 있지 않습니다.
Timer_SslRenegotiation 클라이언트와 서버 간 SSL 재협상이 기본 제한 시간인 2분보다 오래 걸렸으므로 연결이 만료되었습니다.
URLURL을 처리하는 동안 구문 분석 오류가 발생했습니다.
URL_LengthURL이 허용되는 최대 크기를 초과했습니다.
Verb동사를 처리하는 동안 구문 분석 오류가 발생했습니다.
Version_N/S지원되지 않는 버전 오류가 발생했습니다(HTTP 오류 505).

참조

IIS HTTP 오류 로깅을 위한 로깅 필드 추가에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
832975 IIS 6.0 및 IIS 7.0에서 Httperr#.log 파일에 로깅할 수 있는 추가 속성이 있음

속성

기술 자료: 820729 - 마지막 검토: 2012년 11월 30일 금요일 - 수정: 6.0
키워드:?
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com