• /
  • EnglishEspañolFrançais日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

높은 AppDomain.GetData() 잠금 경합 또는 네이티브 메모리 증가

|View as Markdown (English)

문제

.NET 에이전트는 계측된 메서드에서 에이전트를 호출하는 데 필요한 메서드 정보를 캐시합니다. 버전 10.54.0부터 에이전트는 .NET 프레임워크 및 .NET 또는 .NET Core 애플리케이션 모두에 이 캐시를 사용합니다. 버전 10.54.0 이전에는 에이전트가 .NET 프레임워크 애플리케이션에만 이를 사용했습니다.

캐시는 다음과 같은 증상을 유발할 수 있습니다:

  • .NET 프레임워크: 처리량이 높은 애플리케이션에서 높은 스레드 경합이 나타납니다. 프로세스 덤프 및 스택 추적에는 많은 스레드가 AppDomain.GetData() 호출에서 차단된 것으로 나타납니다.
  • .NET 또는 .NET Core, 에이전트 버전 10.54.0~10.56.0: 애플리케이션은 에이전트 버전 10.53.x를 사용할 때보다 더 많은 네이티브 메모리를 사용합니다. 이 증가량은 애플리케이션이 로드하는 어셈블리 수에 따라 커집니다.

원인

.NET 에이전트는 메서드를 계측하기 위해 메서드 서명 정보가 필요합니다. 계측된 메서드가 실행될 때마다 리플렉션 호출을 방지하기 위해 에이전트는 이 정보를 캐시합니다. 캐시는 CPU 시간을 절약하기 위해 더 많은 메모리를 사용합니다. 테스트 결과, 캐시를 활성화했을 때 애플리케이션의 최대 처리량이 더 높았습니다.

.NET 프레임워크에서 에이전트는 이 캐시의 일부를 AppDomain 스토리지에 저장합니다. AppDomain.GetData()에 대한 호출은 전역 잠금을 획득하며, 이는 일부 처리량이 높은 애플리케이션에서 스레드 경합을 유발할 수 있습니다.

.NET 및 .NET Core에서 10.54.0부터 10.56.0까지의 에이전트 버전은 계측된 메서드가 없는 모듈을 포함하여 애플리케이션이 로드하는 모든 모듈에 에이전트 헬퍼 메서드에 대한 참조를 추가합니다. 런타임은 변경된 각 모듈의 메타데이터 사본을 네이티브 메모리에 보관합니다.

에이전트 설정을 변경하기 전에

위의 증상에는 여러 가지 원인이 있을 수 있습니다. 에이전트 설정을 변경하기 전에 스레드 덤프 또는 메모리 측정값을 첨부하여 뉴렐릭 지원팀에 문의하십시오. 지원팀에서 에이전트의 메서드 캐시가 원인인지 확인할 수 있습니다.

해결책

.NET 또는 .NET Core에서 .NET 에이전트 10.54.0~10.56.0 버전을 사용하고 위에서 설명한 네이티브 메모리 증가가 나타나는 경우, 10.56.0보다 최신 버전으로 에이전트를 업데이트 하십시오. 해당 버전에서 에이전트는 System.Private.CoreLib 및 계측된 메서드가 있는 모듈에만 이러한 참조를 추가합니다.

지원팀에서 에이전트의 메서드 캐시가 원인임을 확인하고 에이전트를 업데이트할 수 없는 경우, 다음 환경 변수를 사용하여 캐시를 비활성화할 수 있습니다:

NEW_RELIC_DISABLE_APPDOMAIN_CACHING=true

이 설정은 .NET 에이전트 버전 9.7 이상에서 사용할 수 있으며, .NET 프레임워크, .NET 및 .NET Core 애플리케이션에 적용됩니다. 장기적으로 활성화된 상태로 유지할 수 있습니다.

주의

이 설정은 관리되는 힙 사용량을 줄이지 않으며, 느린 requests나 높은 CPU 문제를 해결하지 않습니다. 캐시가 비활성화된 경우, 계측된 메서드가 실행될 때마다 에이전트가 리플렉션을 사용하므로 에이전트 오버헤드가 증가합니다. 당사의 테스트에서, 캐시가 비활성화된 경우 애플리케이션의 최대 처리량이 더 낮았습니다.

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.