Windows의 Performance counter는 응용 프로그램의 병목 현상을 찾는 데 도움이 될 수 있습니다. Windows에는 Performance Monitor 윈도우에서 볼 수 있는 다양한 내장 Performance counter 들이 존재 합니다:
큰 화면 오른쪽의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 카운터 추가를 선택하면 원하는 카운터를 그래프에 추가 할 수 있습니다.
카운터 추가 창에 범주(category)가 먼저 표시됩니다. 그런 다음 범주를 열고 해당 범주 내에서 하나 이상의 특정 카운터를 선택할 수 있습니다.
선택 즉시, 그래프에 실시간 데이터가 표시됩니다:
System.Diagnostics 네임스페이스에는 로컬 시스템이나 다른 시스템에서 사용 가능한 성능 범주(Performance category) 및 카운터를 찾을 수 있는 몇 가지 객체들이 존재하고 있습니다.
각 성능 범주에는 이름(name), 도움말 텍스트(help text) 및 유형(type)이 있습니다. 컴퓨터에서 사용할 수 있는 범주를 찾는 방법은 간단합니다.:
PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();
foreach (PerformanceCounterCategory category in categories)
{
Console.WriteLine("Category name: {0}", category.CategoryName);
Console.WriteLine("Category type: {0}", category.CategoryType);
Console.WriteLine("Category help: {0}", category.CategoryHelp);
}
GetCategories()에는 네트워크 내의 다른 컴퓨터에 있는 카운터를 보려면 컴퓨터 이름을 지정할 수 있는 오버로딩 메서드가 있습니다.
이 게시물을 작성할 당시 내 컴퓨터에는 161개의 범주가 있었습니다. 예시:
Name: WMI Objects
Help: Number of WMI High Performance provider returned by WMI Adapter
Type: SingleInstance
이름: WMI 개체
도움말: WMI 어댑터가 반환한 WMI 고성능 공급자 수
유형: 단일 인스턴스
범주가 파악되면 범주 내의 카운터들은 쉽게 나열할 수 있습니다. 아래 코드는 인스턴스 이름과 함께 범주 이름, 유형 및 도움말 텍스트를 인쇄합니다. 범주 내에 별도의 인스턴스가 있는 경우 인스턴스 이름이 존재하는 경우 이와 함꼐 GetCounters 메서드를 호출해야 합니다. 그렇지 않으면 여러 인스턴스가 있다는 예외가 발생 할 것입니다.
PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();
foreach (PerformanceCounterCategory category in categories)
{
Console.WriteLine("Category name: {0}", category.CategoryName);
Console.WriteLine("Category type: {0}", category.CategoryType);
Console.WriteLine("Category help: {0}", category.CategoryHelp);
string[] instances = category.GetInstanceNames();
if (instances.Any())
{
foreach (string instance in instances)
{
if (category.InstanceExists(instance))
{
PerformanceCounter[] countersOfCategory = category.GetCounters(instance);
foreach (PerformanceCounter pc in countersOfCategory)
{
Console.WriteLine("Category: {0}, instance: {1}, counter: {2}", pc.CategoryName, instance, pc.CounterName);
}
}
}
}
else
{
PerformanceCounter[] countersOfCategory = category.GetCounters();
foreach (PerformanceCounter pc in countersOfCategory)
{
Console.WriteLine("Category: {0}, counter: {1}", pc.CategoryName, pc.CounterName);
}
}
}
각 카운터에는 차례로 이름, 도움말 텍스트 및 유형이 있습니다(name, a help text and a type). 예를 들어 다음은 "Active Server Pages" 범주가 있는 카운터입니다:
Name: Requests Failed Total
Help: The total number of requests failed due to errors, authorization failure, and rejections.
Type: NumberOfItems32
이름: 실패한 총계 요청
도움말: 오류, 인증 실패 및 거부로 인해 실패한 총 요청 수입니다.
유형: NumberOfItems32
여기에서 진단과 관련된 모든 게시물을 볼 수 있습니다.
이상.
'이것저것' 카테고리의 다른 글
[C#.NET] Windows performance counter 값 가져오기 (0) | 2023.02.03 |
---|---|
[.NET C#].NET C#에서 WMI 네임스페이스 내 모든 WMI 클래스 이름 찾기 (0) | 2023.02.02 |
IIS(인터넷 정보 서비스) 모니터링 (0) | 2023.01.31 |
IIS App Pool과 Oracle Pooling Ado.Net의 관계 (0) | 2023.01.22 |
JMeter Loop Count와 JMeter Thread Count (0) | 2023.01.17 |