뉴렐릭의 .NET 에이전트는 .NET 런타임에서 귀하의 성능에 대한 지표를 수집합니다. 이러한 지표는 CPU 및 메모리가 소비하는 양은 물론, 디자인의 성능이 가비지 수집 및 스레드 풀 리소스 경합으로 인해 어떤 영향을 받을 수 있는지에 대한 인사이트를 제공할 수 있습니다.
이 지표는 one.newrelic.com > All capabilities > APM & services 에서 볼 수 있습니다. 애플리케이션을 선택하고 More views > Dotnet VMs 로 이동합니다.
다음을 통해 이러한 지표를 볼 수도 있습니다.
- 맞춤형 대시보드생성 .
- one.newrelic.com > All capabilities > APM & services 에서 Metric explorer 사용 > 애플리케이션을 선택하고 More views 로 이동합니다.
CPU 메트릭
다음 CPU 지표가 수집됩니다.
| 이 프로세스에서 소비되는 CPU 비율입니다. |
| 프로세스가 애플리케이션 코드를 실행하는 데 소비한 시간입니다. |
메모리 메트릭
다음 메모리 지표가 수집됩니다:
| 프로세스에 할당된 전용(물리적) 메모리의 양(MB)입니다. |
| 프로세스에 할당된 실제 메모리의 양입니다. |
가비지 컬렉션 메트릭
.NET 가비지 수집기는 백그라운드에서 실행되며 애플리케이션에서 더 이상 참조하지 않는 개체에 연결된 메모리를 식별하고 회수하는 일을 담당합니다. 다음 지표는 개체 할당 패턴과 잠재적인 초과 할당 시나리오를 식별하는 데 유용할 수 있습니다. 이 문서 에서는 .NET의 가비지 수집 기본 사항에 대해 자세히 설명합니다.
중요
.NET 프레임워크 기능의 경우, 귀하가 실행하는 Windows 사용자는 Windows 성능 카운터 데이터에 액세스할 수 있어야 합니다. 일반적으로 이는 사용자를 Performance Monitor Users 및 Performance Log Users 그룹에 추가하여 수행됩니다. 권한이 충분하지 않으면 에이전트가 가비지 수집 지표를 수집하지 못하게 됩니다.
전체 측정항목
또한 다음과 같은 가비지 컬렉션 지표가 수집됩니다.
| 객체에 대한 참조 수입니다. |
| 일반적으로 런타임은 가비지 수집을 자동으로 수행합니다. 이 지표는 로그 내에서
에 대한 명시적인 호출을 통해 가비지 컬렉션이 수동으로 호출된 횟수를 식별합니다. |
(.NET 프레임워크만 해당) | 마지막 가비지 수집 주기 이후 .NET 런타임이 가비지 수집을 수행하는 데 소요한 경과 시간의 비율입니다. |
세대 - 0 힙
다음과 같은 가비지 수집 Gen0 지표가 수집됩니다.
| 0세대에서 할당 할 수 있는 메모리 양(MB)입니다. 이는 0세대에서 사용 중인 메모리 양이 아니라 할당할 수 있는 최대 메모리 양을 나타냅니다. |
| 가비지 수집에서 살아남고 Gen0에서 Gen1로 승격된 메모리 양(MB)입니다. 메모리에 대한 활성 참조가 있으면 메모리는 가비지 수집 후에도 유지됩니다. |
| 가비지 수집기가 0세대 가비지 수집을 실행한 횟수입니다. |
세대 - 1 힙
다음과 같은 가비지 수집 Gen1 지표가 수집됩니다.
| 1세대 힙에 사용되는 메모리 양(MB)입니다. 이는 0세대 힙에 사용할 수 있는 최대 메모리 양을 측정하는
와 다릅니다. |
| 가비지 수집에서 살아남고 Gen1에서 Gen2로 승격된 메모리 양(MB)입니다. 메모리에 대한 활성 참조가 있으면 메모리는 가비지 수집 후에도 유지됩니다. |
| 가비지 수집기가 1세대 가비지 수집을 실행한 횟수입니다. |
세대 - 2 힙
다음과 같은 가비지 수집 Gen2 지표가 수집됩니다.
| Gen2 힙에서 사용 중인 메모리 양(MB)입니다. |
(.NET Core만 해당) | 가비지 수집에서 살아남은 메모리 양(MB)입니다. 메모리에 대한 활성 참조가 있으면 메모리는 가비지 수집 후에도 유지됩니다. Gen0 및 Gen1과 달리 가비지 수집 후에도 유지되는 메모리는 승격되지 않습니다 . |
| 가비지 수집기가 2세대 가비지 수집을 실행한 횟수입니다. |
LOH(대형 개체 힙)
수집되는 가비지 컬렉션 LOH 지표는 다음과 같습니다.
| LOH(대형 개체 힙)에서 사용 중인 메모리 양(MB)입니다. .NET Core에서는 대형 개체 힙을 Gen3이라고도 합니다. |
(.NET Core만 해당) | 가비지 수집에서 살아남은 메모리 양(MB)입니다. 메모리에 대한 활성 참조가 있으면 메모리는 가비지 수집 후에도 유지됩니다. Gen0 및 Gen1과 달리 가비지 수집 후에도 유지되는 메모리는 승격되지 않습니다 . |
관리 스레드 풀 메트릭
.NET 런타임은 스레드 풀을 관리합니다. 다음 메트릭은 스레드 풀 측면에서 애플리케이션 성능에 대한 가시성을 제공하고 스레드 풀 기아 영역을 식별하는 데 도움이 될 수 있습니다. 스레드 풀 기아/경합은 응용 프로그램의 요청을 처리하는 데 사용할 수 있는 스레드가 충분하지 않을 때 발생합니다. 다음 문서에서는 관리되는 스레드 풀의 다양한 기능에 대해 설명합니다. 이러한 메트릭에는 스레드 풀에서 관리하지 않는 스레드에 대한 정보가 포함되지 않습니다.
작업자 스레드
작업자 스레드는 프로세스를 대신하여 작업을 수행하는 데 사용되는 CPU 바운드 스레드입니다.
| 프로세스에 사용 가능한 관리되는 스레드 수를 식별합니다. 지속적으로 낮은 숫자는 잠재적인 기아 시나리오를 나타냅니다. |
| 현재 프로세스에서 사용 중인 작업자 스레드 수를 식별합니다. |
완료 스레드
I/O 스레드라고도 하는 완료 스레드는 I/O 작업의 완료를 모니터링하는 데 사용됩니다.
| 이 지표는 현재 프로세스에 사용 가능한 스레드 수를 식별합니다. 지속적으로 낮은 숫자는 잠재적인 기아 시나리오를 나타냅니다. |
| 이 지표는 현재 프로세스에서 사용 중인 완료 스레드 수를 식별합니다. |
처리량
처리량 메트릭은 다른 스레드에서 수행하도록 요청된 작업의 양, 시작된 작업의 양, 스레드 풀 리소스를 사용할 수 있을 때까지 대기 중인 작업의 양을 측정합니다.
| 다른 스레드 풀 관리 스레드에서 작업이 실행되도록 요청된 횟수를 식별합니다. |
| 실행을 시작한 별도의 스레드에서 실행하도록 요청된 작업 항목 수를 식별합니다. |
| 요청되었지만 시작 대기 중인 작업 항목 수를 식별합니다. 지속적으로 증가하는 숫자는 잠재적인 스레드 풀 부족 상황을 나타냅니다. 다음 애플리케이션에 사용할 수 있는 스레드 수를 수정하는 방법을 설명합니다. |