dotTrace는 Visual Studio/JetBrains Rider에서 바로 작동하는 .NET 애플리케이션용 성능 프로파일러이며 성능 병목 현상 탐지 및 분석 방법을 다양하게 제공합니다. 이 페이지를 읽고 자세한 내용을 알아보세요.
dotTrace를 사용하면 데스크톱 애플리케이션, .NET Core, IIS 또는 IIS Express 웹 서버상에 호스팅된 ASP.NET 애플리케이션, Mono 및 Unity 애플리케이션, WCF 서비스, Windows 서비스, 유니버설 Windows 플랫폼 애플리케이션, 유닛 테스트 등 다양한 .NET 애플리케이션에서 성능 병목 현상을 찾아낼 수 있습니다.
dotTrace를 활용하면 지원되는 모든 버전의 .NET Framework, .NET Core, .NET, Mono 5.10 이상 버전 및 Unity 2018.3 이상 버전에 따라 애플리케이션을 프로파일링할 수 있습니다.
메서드 호출 실행 시간을 측정하는 '기존' 성능 프로파일링과 달리 Timeline(타임라인) 프로파일링은 시간에 따라 호출이 배포된 현황을 보여줍니다.
이 프로파일링 모드는 메서드 호출 데이터를 타임라인으로 감싸기 때문에 단순히 가장 느린 메서드를 탐지하는 수준을 넘어, UI 멈춤, 과도한 가비지 수집, 불균등한 워크로드 분배, 비효율적인 파일 I/O 등, 이벤트 순서가 중요한 성능 문제를 진단할 수 있습니다.
물론, 기존 프로파일링 모드도 dotTrace에서 여전히 사용할 수 있습니다. Sampling(샘플링) 프로파일링은 전체 애플리케이션 성능을 평가하는 가장 쉬운 방법이며 Tracing(추적) 및 Line-by-line(한 줄씩) 프로파일링 모드는 특정 알고리즘이 내부에서 작동하는 방식에 관한 세부 정보가 필요할 때 유용합니다.
필터, 호출 트리 또는 다이어그램을 사용해 프로파일링 데이터를 조각낼 수 있습니다. 필터를 적용하면 특정 조건에 따라 선택된 시간 간격 모음을 얻을 수 있습니다. 이 작동 방식은 필요한 데이터를 정확히 추출하기 위해 데이터베이스에서 쿼리를 실행하는 방식과 매우 유사합니다.
예를 들어, UI 멈춤 현상이 가비지 수집을 차단하다가 발생했는지 여부를 파악하려면 UI 멈춤이 발생하고 가비지 수집 차단이 수행된 주요 스레드의 모든 시간 간격을 선택하도록 dotTrace에 요청하면 됩니다. 복잡하게 들릴 수 있지만 사실 이 필터 조합은 단 2번 클릭으로 작동시킬 수 있습니다.
dotTrace는 Visual Studio와 통합되어 IDE에서 바로 개발 중인 애플리케이션의 프로파일링을 시작할 수 있습니다. Rider에서 dotTrace 플러그인을 사용하면 타임라인 기반의 성능 프로파일링뿐 아니라 정적 메서드, 유닛 테스트, 프로세스 실행, 원격 애플리케이션 프로파일링을 수행할 수 있습니다.
Visual Studio 및 JetBrains Rider와 통합으로 거의 완벽한 프로파일링 경험을 제공합니다. 이제 IDE와 프로파일러 간 전환할 필요가 없습니다.
dotTrace를 사용하면 비동기화된 코드를 간편하게 분석할 수 있습니다. 비동기
호출의 모든 '부분'이 한 곳에 표시되므로 다양한 호출 스택에서 검색할 필요가 없습니다.
dotTrace에서는 코드 내 모든 정적 메서드를 즉시 프로파일링할 수 있습니다. 간단히 해당 메서드 위에 캐럿을 올려놓고, Alt+Enter를 누른 다음, 액션 목록에서 Debug(디버그) | Profile(프로파일)을 선택하면 됩니다.
이 기능으로 수행할 수 있는 작업을 상상해 보세요. 모든 코드 부분을 작성한 즉시 그 자리에서 프로파일링할 수 있습니다. 솔루션을 빌드하거나, 프로파일러에서 프로파일링을 실행하거나, 새 코드가 실행되는 사용 시나리오를 수행하는 등의 작업이 필요 없습니다.
대부분의 경우, 로컬에서 실행되는 애플리케이션을 프로파일링합니다. 그런데 원격 웹 서버에서 지연되고 있는 애플리케이션의 경우는 어떻게 해야 할까요?
dotTrace는 원격 시스템에 연결하여 독립 실행형 또는 웹 애플리케이션 또는 Windows 서비스를 프로파일링할 수 있습니다. dotTrace를 원격 시스템에 설치할 필요도 없이 몇 개 파일만 복사하면 됩니다.
dotTrace를 실행 중인 애플리케이션에 연결하여 프로파일링하고, 프로파일링 데이터를 캡처한 즉시 연결을 해제할 수 있습니다.
이 방식을 사용하면 프로파일러에서 애플리케이션을 실행할 때 발생하는 오버헤드를 최소화할 수 있습니다. 게다가 프로파일링할 때마다 애플리케이션을 다시 시작할 수 없는 운영 환경에서 성능 문제를 검사할 수도 있습니다.
Visual Studio + ReSharper* 번들 또는 JetBrains Rider**가 있으면 코드 에디터 또는 유닛 테스트 러너에서 유닛 테스트를 간편하게 시작할 수 있습니다.
* ReSharper가 설치되어 있지 않아도 NUnit, MSTest 또는 xUnit에서 제공하는 기본 유닛 테스트 러너를 여전히 프로파일링할 수 있습니다.
** 프로파일링 기능은 dotUltimate 또는 All Products Pack 라이선스를 보유한 사용자에게만 지원됩니다.
타임라인 프로파일링 스냅샷을 분석하는 경우, 웹 애플리케이션에서 후속 HTTP 요청이 처리되는 시간 간격을 필터링할 수 있습니다. 정확한 데이터를 확보해 정확한 근본 원인을 파악하고 느리게 실행되는 메서드에 초점을 맞추세요. 타임라인 프로파일링으로 웹 애플리케이션이 더욱 빨라집니다.
타임라인 프로파일링을 사용하여 각각의 특정 쿼리가 애플리케이션 성능에 미치는 영향을 분석하세요. SQL Queries(SQL 쿼리) 필터는 모든 SQL쿼리 및 연결과 그 성능 통계를 표시합니다.
또한, 더 자세한 분석을 위해 쿼리 내용을 별도의 창에 열 수 있어 편리합니다. 1개 이상의 쿼리를 선택해 모든 데이터를 필터링하고 해당 쿼리가 실행되는 메서드를 검사할 수도 있습니다.
이제 비효율적인 SQL 쿼리를 모두 제거하세요.
Profiling SDK를 사용하면 프로그래밍 방식으로 프로파일링 데이터 수집을 시작하거나 중단하고 수집된 스냅샷을 저장하는 등, 코드에서 바로 프로파일링 세션을 제어할 수 있습니다.
2가지 중요한 사용 시나리오도 지원됩니다. 첫째, 이 SDK를 사용하면 프로파일링 범위를 좁히고 프로파일링할 코드 부분을 선택할 수 있습니다. 두 번째 사용 시나리오는 셀프 프로파일링된 애플리케이션에 관한 것으로, 최종 사용자 시스템에서 애플리케이션이 동작하는 방식을 보여주는 통계를 수집할 수 있습니다.
dotTrace에는 프로파일링 스냅샷 수집을 자동화하는 데 사용할 수 있는 명령줄 프로파일링 도구가 포함되어 있습니다. 이 도구는 지속적 통합 빌드의 일부를 프로파일링하려는 경우 필수적입니다.
JetBrains TeamCity를 CI 서버로 사용하는 경우, TeamCity에 dotTrace 플러그인을 반드시 설치해야 합니다. 이 플러그인은 통합 테스트를 프로파일링할 때 애플리케이션 성능이 저하되는 것을 방지합니다. 테스트 실행 시간에 한도를 설정하기만 하면, 시간이 초과될 때 플러그인에서 자동으로 성능 스냅샷을 찍고 테스트를 실패시킵니다.
시간을 잡아먹는 함수를 최적하는 데 오랜 시간을 쏟은 후, 해당 최적화가 실제로 효과가 있는지 확인하기 위해 처음부터 프로파일링을 시작해야 할 때가 있습니다.
dotTrace에서는 이러한 문제가 발생하지 않습니다. 애플리케이션을 다시 프로파일링하지 않아도 사용자가 설정한 시간 조정에 따라 프로파일러에서 스냅샷의 모든 함수 시간을 즉시 다시 계산합니다. 이 작업은 "이 함수를 40%까지 최적화하면 어떻게 되는가?"라고 프로파일러에 질문을 던지는 것과 같습니다. 간단히 특정 클래스에 있는 함수 1개 또는 전체 시간만 새로 설정하세요. 그러면 전체 스냅샷의 시간값이 다시 계산됩니다.
dotTrace는 동일한 애플리케이션의 성능 스냅샷 중 무엇이든 2가지를 비교할 수 있습니다. dotTrace는 각 함수에서 소비한 호출 수 및 시간의 차이를 표시하는 비교 스냅샷을 생성합니다. 비교 스냅샷은 일반 성능 스냅샷과 마찬가지 방식으로 확인 및 분석 가능합니다.
30일 무료 평가 이용 가능