티스토리 뷰

WEB TIP/Windows Server

ASP.NET 성능카운터

제프 2013. 12. 31. 10:51

출처: 성능 카운터


ASP.NET에서는 시스템 및 응용 프로그램이라는 두 개의 성능 카운터 그룹을 지원합니다. 시스템 카운터 그룹은 ASP.NET 성능 카운터 개체의 PerfMon에 노출되고, 응용 프로그램 카운터 그룹은 ASP.NET Applications 성능 개체에 노출됩니다. 상태 서버가 실행 중인 서버 컴퓨터에만 적용되는 ASP.NET 성능 개체에 있는 State Server Sessions 카운터와, 처리 중인 사용자 세션에만 적용되는 ASP.NET Applications 성능 개체에 있는 Sessions 카운터 사이에는 큰 차이가 있습니다.

참고 각 성능 카운터에 연결된 값은 400밀리초마다 업데이트됩니다. 모니터링 응용 프로그램을 만들 때 이 경과 시간을 고려하여 코드에서 유효하지 않은 카운터 값이 사용되지 않도록 해야 합니다. 자세한 내용은 시스템 모니터링 구성 요소 만들기를 참조하십시오.

ASP.NET 웹 응용 프로그램의 성능을 모니터링할 때 항상 다음 성능 카운터를 추적해야 합니다.


성능 개체


성능 카운터


ASP.NET
Application Restarts

ASP.NET
Requests Queued

ASP.NET
Worker Process Restarts

ASP.NET 응용 프로그램
Errors Total

ASP.NET 응용 프로그램
Requests/Sec

Processor
% CPU Utilization
% CPU Utilization 카운터는 웹 서버 컴퓨터의 CPU 활용율을 모니터링하는 데 사용합니다. 클라이언트 로드에 관계 없이 CPU 활용율이 낮거나 CPU 활용율을 극대화할 수 없으면 해당 웹 응용 프로그램의 잠금이나 리소스에 경합이 있는 것입니다.
또한 웹 응용 프로그램의 성능에 문제가 있는지 여부를 파악할 때에는 다음 성능 카운터를 유용하게 사용할 수 있습니다.


성능 개체

성능 카운터

ASP.NET 응용 프로그램
Pipeline Instance Count

.NET CLR Exceptions
# of Exceps Thrown

System
Context Switches/sec

# of Exceps Thrown 카운터에는 또 다른 성능 지표라고 할 수 있는, 응용 프로그램에서 throw된 예외의 수가 표시됩니다. 그러나 일부 코드 경로는 예외에 의존하여 기능을 수행하기도 합니다. 예를 들어, HttpResponse.Redirect 메서드는catch할 수 없는 예외인 ThreadAbortException을 throw하여 작동합니다. 따라서 예외로 인해 응용 프로그램에 오류가 생겼는지 여부를 확인할 때 Errors Total 카운터를 사용하여 이 값을 추적하는 것이 더 유용합니다.

Context Switches/sec 카운터에서는 웹 서버 컴퓨터에 있는 모든 CPU에 의해 스레드 컨텍스트가 전환되는 비율이 측정됩니다. 이 카운터의 값이 크면 잠금에 심각한 경합이 있거나 사용자와 커널 모드 사이에 스레드에 의한 전환이 잦은 상태입니다. 샘플링 프로파일러와 기타 도구를 사용한 추가 검사로 확인할 수 있습니다.

ASP.NET 및 ASP.NET 응용 프로그램 성능 카운터에 대해서는 다음 목록에서 자세히 설명합니다.


ASP.NET 시스템 성능 카운터


ASP.NET에서는 다음과 같은 ASP.NET 시스템 성능 카운터를 지원합니다. 이 카운터는 웹 서버 컴퓨터의 모든 ASP.NET 응용 프로그램에 대한 정보를 집계하거나, 일반적으로 같은 응용 프로그램을 실행하는 ASP.NET 서버 시스템에 적용됩니다. 이것은 웹 팜과 웹 가든을 포함할 수 있습니다. 

Application Restarts 
웹 서버의 작동 기간 동안 응용 프로그램이 다시 시작된 횟수입니다. 응용 프로그램 재시작 횟수는 Application_OnEnd 이벤트가 발생할 때마다 증가합니다. Web.config 파일의 변경, 응용 프로그램의 in 디렉터리에 저장되어 있는 어셈블리의 변경 또는 Web Forms 페이지의 너무 잦은 변경으로 인해 응용 프로그램이 다시 시작될 수 있습니다. 이 카운터의 값이 갑자기 증가하면 알 수 없는 문제로 인해 웹 응용 프로그램이 종료된 것입니다. 이 경우에는 가능한 빨리 확인을 해야 합니다. 

참고 이 값은 IIS(인터넷 정보 서비스) 호스트를 다시 시작할 때마다 다시 설정됩니다.

Application Running 
서버 컴퓨터에서 실행되는 응용 프로그램의 수입니다. 

Requests Disconnected 
통신 오류로 인해 연결이 끊어진 요청 수입니다. 

Requests Queued
대기열에서 서비스를 기다리는 요청 수입니다. 이 수가 클라이언트 로드에 비례하여 지속적으로 늘어나기 시작하면 웹 서버 컴퓨터가 처리할 수 있는 동시 요청의 한계에 도달한 것입니다. 이 카운터의 기본 최대값은 5,000입니다. 컴퓨터의 Machine.config 파일에서 이 설정을 변경할 수 있습니다. 

Requests Rejected 
요청을 처리할 서버 리소스 부족으로 인해 실행되지 않은 총 요청 수입니다. 이 카운터는 서버가 사용 중임을 나타내는 503 HTTP 상태 코드를 반환하는 요청 수를 나타냅니다. 

Request Wait Time 
대기열에 있는 가장 최근의 요청이 처리를 위해 대기한 시간(밀리초)입니다. 

Session State Server Connections Total 
out-of-process 세션 상태 데이터가 저장되는 컴퓨터에 대한 세션 상태 연결의 총 수입니다. 

Session SQL Server Connections Total 
세션 상태 데이터가 저장되는 Microsoft SQL Server 데이터베이스에 대한 세션 상태 연결의 총 수입니다. 

State Server Sessions Abandoned 
명시적으로 중단된 사용자 세션 수입니다. 이것은 브라우저 닫기나 다른 사이트 탐색 등과 같은 특정한 사용자 작업에 의해 종료된 세션입니다. 이 카운터는 상태 서버 서비스(aspnet_state)를 실행하는 컴퓨터에서만 사용할 수 있습니다. 

State Server Sessions Active 
현재 활성화되어 있는 사용자 세션 수입니다. 이 카운터는 상태 서버 서비스(aspnet_state)를 실행하는 컴퓨터에서만 사용할 수 있습니다. 

State Server Sessions Timed Out 
사용자 작업이 없어 비활성화된 사용자 세션 수입니다. 이 카운터는 상태 서버 서비스(aspnet_state)를 실행하는 컴퓨터에서만 사용할 수 있습니다. 

State Server Sessions Total
프로세스가 수행되는 동안 만들어진 세션 수입니다. 이 카운터는 State Server Sessions Active, State Server Sessions Abandoned 및 State Server Sessions Timed Out의 누적 값입니다. 이 카운터는 상태 서버 서비스(aspnet_state)를 실행하는 컴퓨터에서만 사용할 수 있습니다. 

Worker Process Restarts 
서버 컴퓨터에서 작업자 프로세스가 다시 시작된 횟수입니다. 갑자기 실패하거나 의도적으로 재활용되는 경우에에는 작업자 프로세스가 다시 시작될 수 있습니다. 이 카운터 값이 갑자기 늘어날 경우에는 가능한 빨리 확인해야 합니다. 

Worker Process Running
서버 컴퓨터에서 실행되는 작업자 프로세스 수입니다. 


ASP.NET 응용 프로그램 성능 카운터

ASP.NET에서는 ASP.NET 응용 프로그램의 단일 인스턴스 성능을 모니터링할 때 사용할 수 있는 다음과 같은 응용 프로그램 성능 카운터를 지원합니다. 이 카운터에만 있는 고유 인스턴스인 __Total__은 웹 서버의 모든 응용 프로그램에 대한 카운터를 집계합니다(이 항목의 첫 부분에서 설명한 전역 카운터와 유사). __Total__ 인스턴스는 항상 사용할 수 있습니다. 이 카운터는 서버에 응용 프로그램이 없을 경우 0을 표시합니다. 

Anonymous Requests 
익명 인증을 사용한 요청 수입니다. 

Anonymous Requests/Sec 
익명 인증을 사용한 초 당 요청 수입니다. 

Cache Total Entries 
캐시에 있는 총 엔트리 수입니다. 이 카운터에는 ASP.NET 페이지 프레임워크에서 내부적으로 사용한 캐시와 노출된 API를 통해 외부에서 사용한 캐시가 모두 포함됩니다. 

Cache Total Hits 
캐시의 총 적중 수입니다. 이 카운터에는 ASP.NET 페이지 프레임워크에서 내부적으로 사용한 캐시와 노출된 API를 통해 외부에서 사용한 캐시가 모두 포함됩니다. 

Cache Total Misses 
응용 프로그램 당 실패한 캐시 요청 수입니다. 이 카운터에는 ASP.NET에서 내부적으로 사용한 캐시와 노출된 API를 통해 외부에서 사용한 캐시가 모두 포함됩니다. 

Cache Total Hit Ratio 
캐시 실패 적중률입니다. 이 카운터에는 ASP.NET에서 내부적으로 사용한 캐시와 노출된 API를 통해 외부에서 사용한 캐시가 모두 포함됩니다. 

Cache Total Turnover Rate 
초 당 총 캐시에서 제거 및 추가된 수입니다. 이것은 캐시가 얼마나 효율적으로 사용되는지 확인하는 데 유용합니다. 캐시에서 들어오고 나간 수가 많으면 캐시가 효율적으로 사용되지 않는 것입니다. 

Cache API Entries 
응용 프로그램 캐시에 있는 총 엔트리 수입니다. 

Cache API Hits 
외부 캐시 API를 통해서만 액세스한 캐시의 총 적중 수입니다. 이 카운터는 ASP.NET에서 내부적으로 사용한 캐시는 추적하지 않습니다. 

Cache API Misses 
외부 캐시 API를 통해 액세스한 캐시 중에서 실패한 총 요청 수입니다. 이 카운터는 ASP.NET에서 내부적으로 사용한 캐시는 추적하지 않습니다. 

Cache API Hit Ratio 
외부 캐시 API를 통해 액세스할 때 실패한 캐시 적중률입니다. 이 카운터는 ASP.NET에서 내부적으로 사용한 캐시는 추적하지 않습니다. 

Cache API Turnover Rate 
외부 API를 통해 사용할 때 초 당 캐시에서 제거 및 추가된 수(ASP.NET 페이지 프레임워크에서 내부적으로 사용한 것 제외)입니다. 이것은 캐시가 얼마나 효율적으로 사용되는지 확인하는 데 유용합니다. 캬시에서 추가되고 제거된 수가 많으면 캐시가 효율적으로 사용되지 않는 것입니다. 

Compilations Total 
현재 웹 서버 프로세스 수행 중에 발생한 총 컴파일 수입니다. 이것은 .aspx, .asmx, .ascx 또는 .ashx 확장명이 붙은 파일이나 코드 숨김 소스 파일을 서버에서 동적으로 컴파일할 때 발생합니다. 
참고 이 수는 응용 프로그램의 모든 부분에 대한 요청이 이루어지는 초기에 최대값으로 올라갑니다. 그러나, 일단 컴파일을 수행하면 결과 바이너리가 디스크에 저장되어 소스 파일이 변경되기 전까지 다시 사용됩니다. 즉, 프로세스를 다시 시작하는 이벤트가 발생해도 응용 프로그램이 수정되거나 다시 배포되기 전까지는 이 카운터가 0(비활성)으로 유지됩니다.

Debugging Requests 
디버깅을 사용하는 동안 발생한 요청 수입니다. 

Errors During Preprocessing 
구분 분석 동안 발생한 오류 수입니다. 컴파일 및 런타임 오류는 제외합니다. 

Errors During Compilation 
동적 컴파일 동안 발생한 오류 수입니다. 파서 및 런타임 오류는 제외합니다. 

Errors During Execution 
HTTP 요청을 실행하는 동안 발생한 총 오류 수입니다. 파서 및 컴파일 오류는 제외합니다. 

Errors Unhandled During Execution 
HTTP 요청을 실행하는 동안 발생한 처리되지 않은 총 오류 수입니다.
참고 처리되지 않은 오류는 페이지에서 사용자 코드를 벗어나서 ASP.NET 내부 오류 처리 논리에 입력된, catch되지 않은 모든 런타임 예외를 말합니다. 이 규칙에 대한 예외는 다음 상황에서 발생합니다.
· 사용자 지정 오류가 사용되거나 오류 페이지가 정의된 경우, 또는 두 가지 모두에 해당하는 경우 
· Page_Error 이벤트가 사용자 코드에 정의되고 오류가 HttpServerUtility.ClearError 메서드를 사용하여 지워지거나 리디렉션이 수행될 때 

Errors Unhandled During Execution/Sec 
HTTP 요청을 실행하는 동안 발생한 초 당 처리되지 않은 예외 수입니다. 

Errors Total
HTTP 요청을 실행하는 동안 발생한 총 오류 수입니다. 파서, 컴파일, 런타임 오류를 모두 포함합니다. 이 카운터는 Errors During Compilation, Errors During Preprocessing 및 Errors During Execution 카운터의 합계입니다. 정상적으로 작동하는 웹 서버라면 오류를 생성하지 않아야 합니다. ASP.NET 웹 응용 프로그램에서 오류가 발생하는 경우에는 오류 복구에 대한 코드 경로가 크게 다르기 때문에 처리량 결과가 왜곡될 수 있습니다. 따라서 테스트를 하기 전에 응용 프로그램에 버그가 있는지 검사하고 수정하는 것이 좋습니다. 

Errors Total/Sec 
HTTP 요청을 실행하는 동안 발생하는 초 당 오류 수입니다. 파서, 컴파일, 런타임 오류를 모두 포함합니다. 

Output Cache Entries 
출력 캐시에 있는 총 엔트리 수입니다. 

Output Cache Hits 
출력 캐시에서 서비스된 총 요청 수입니다.

Output Cache Misses 
응용 프로그램 당 실패한 출력 캐시 요청 수입니다. 

Output Cache Hit Ratio 
출력 캐시에서 서비스된 총 요청 비율(%)입니다. 

Output Cache Turnover Rate 
초 당 출력 캐시에서 제거 및 추가된 수입니다. 캐시에서 들어오고 나간 수가 많으면 캐시가 효율적으로 사용되지 않는 것입니다. 

Pipeline Instance Count 
지정한 ASP.NET 응용 프로그램에 대한 활성 요청 파이프라인 인스턴스의 수를 나타냅니다. 파이프라인 인스턴스 내에서는 스레드 하나만이 실행되기 때문에 이 값은 특정 응용 프로그램에 대해 처리되고 있는 동시 요청의 최대 수를 나타냅니다. 대부분의 경우, 로드 중일 때는 이 값이 낮은 것이 좋습니다. 이 수가 낮으면 CPU 활용율이 높은 것입니다. 

Request Bytes In Total
모든 요청의 총 크기(바이트)입니다. 

Request Bytes Out Total
클라이언트로 보낸 응답의 총 크기(바이트)입니다. 여기에는 표준 HTTP 응답 헤더가 포함되지 않습니다. 

Requests Executing 
현재 실행 중인 요청 수입니다. 

Requests Failed 
실패한 요청의 총 수를 나타냅니다. 상태 코드가 400 이상이면 이 카운터의 값이 늘어납니다. 
참고 요청으로 인해 상태 코드 401이 발생하면 이 카운터와 Requests Not Authorized 카운터의 값이 늘어납니다. 요청으로 인해 상태 코드 404 또는 414가 발생하면 이 카운터와 Requests Not Found 카운터의 값이 늘어납니다. 상태 코드 500이 발생하면 이 카운터와 Requests Timed Out 카운터의 값이 늘어납니다
참고: 동일한 기능의 ASP 카운터도 처리할 수 없는 거부된 요청이 있을 경우 증가됩니다. 이것은 프로세스 모델이 아닌 IIS에서 거부가 이루어지기 때문입니다.

Requests Not Found 
리소스를 찾을 수 없어 실패한 요청 수입니다(상태 코드 404, 414). 

Requests Not Authorized
인증이 없어서 실패한 요청 수입니다(상태 코드 401). 

Requests Succeeded 
성공적으로 실행된 요청 수입니다(상태 코드 200). 

Requests Timed Out 
시간이 초과된 요청 수를 나타내며 여기에 해당하는 상태 코드는 500입니다. 

Requests Total 
서비스를 시작한 이후 총 요청 수입니다. 

Requests/Sec
초 당 실행된 요청 수입니다. 이 값은 응용 프로그램 현재 처리량을 나타냅니다. 로드가 계속되는 상태에서 이 값은 가비지 수집, 캐시 정리 스레드, 외부 서버 도구 등의 다른 서버 작업을 제외하고 일정한 범위를 유지해야 합니다. 

Sessions Active 
현재 활성화된 세션 수입니다. 이것은 메모리 내 세션 상태에만 지원됩니다. 

Sessions Abandoned 
명시적으로 중단된 세션 수입니다. 이것은 메모리 내 세션 상태에만 지원됩니다. 

Sessions Timed Out
시간이 초과된 세션 수입니다. 이것은 메모리 내 세션 상태에만 지원됩니다. 

Sessions Total 
시간이 초과된 세션 수입니다. 이것은 메모리 내 세션 상태에만 지원됩니다. 

Transactions Aborted 
중단된 트랜잭션 수입니다. 

Transactions Committed
커밋된 트랜잭션 수입니다. 

Transactions Pending 
진행 중인 트랜잭션 수입니다. 

Transactions Total 
서비스가 시작된 이후 총 트랜잭션 수입니다. 

Transactions/Sec 
초 당 시작된 트랜잭션 수입니다. 

'WEB TIP > Windows Server' 카테고리의 다른 글

안정성 및 성능 모니터  (0) 2013.12.31
Visual Log Parser 사용법  (0) 2009.06.23
Metabase.xml 수정 (파일업로드&다운로드)  (0) 2009.04.21
Windows XP 서비스 완벽 가이드  (0) 2008.10.28
Active Directory 연결  (0) 2007.01.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함