dotTrace 기능

dotTrace는 Visual Studio/JetBrains Rider에서 바로 작동하는 .NET 애플리케이션용 성능 프로파일러이며 성능 병목 현상 탐지 및 분석 방법을 다양하게 제공합니다. 이 페이지를 읽고 자세한 내용을 알아보세요.

지원되는 애플리케이션 유형 중 일부

모든 유형의 .NET 애플리케이션을 프로파일링

dotTrace를 사용하면 데스크톱 애플리케이션, .NET Core, IIS 또는 IIS Express 웹 서버상에 호스팅된 ASP.NET 애플리케이션, Mono 및 Unity 애플리케이션, WCF 서비스, Windows 서비스, 유니버설 Windows 플랫폼 애플리케이션, 유닛 테스트 등 다양한 .NET 애플리케이션에서 성능 병목 현상을 찾아낼 수 있습니다.

Windows, macOS, Linux 지원

Windows, macOS, Linux 지원

dotTrace는 .NET 프레임워크 1.0~4.7, .NET Core 1.0~3.0, Mono 5.10 이상 및 Unity 2018.3 이상을 대상으로 하는 프로젝트를 지원합니다. macOS 및 Linux에서 dotTrace는 JetBrains Rider의 일부로서 또는 명령줄 프로파일러로서만 사용할 수 있습니다.

dotTrace의 타임라인, 샘플링, 추적 및 한 줄씩 프로파일링 모드

타임라인 및 다양한 프로파일링 모드

메소드 호출 실행 시간을 측정하는 '기존' 성능 프로파일링과 달리 Timeline(타임라인) 프로파일링은 시간에 따라 호출이 배포된 현황을 보여줍니다.

이 프로파일링 모드는 메소드 호출 데이터를 타임라인으로 감싸기 때문에 단순히 가장 느린 메소드를 탐지하는 수준을 넘어, UI 멈춤, 과도한 가비지 수집, 불균등한 워크로드 분배, 비효율적인 파일 I/O 등, 이벤트 순서가 중요한 성능 문제를 진단할 수 있습니다.

물론, 기존 프로파일링 모드도 dotTrace에서 여전히 사용할 수 있습니다. Sampling(샘플링) 프로파일링은 전체 애플리케이션 성능을 평가하는 가장 쉬운 방법이며 Tracing(추적)Line-by-line(한 줄씩) 프로파일링 모드는 특정 알고리즘이 내부에서 작동하는 방식에 관한 세부 정보가 필요할 때 유용합니다.

타임라인 프로파일링 모드의 작동

새로운 프로파일링 환경

필터, 호출 트리 또는 다이어그램을 사용해 프로파일링 데이터를 조각낼 수 있습니다. 필터를 적용하면 특정 조건에 따라 선택된 시간 간격 모음을 얻을 수 있습니다. 이 작동 방식은 필요한 데이터를 정확히 추출하기 위해 데이터베이스에서 쿼리를 실행하는 방식과 매우 유사합니다.

예를 들어, UI 멈춤 현상이 가비지 수집을 차단하다가 발생했는지 여부를 파악하려면 UI 멈춤이 발생하고 가비지 수집 차단이 수행된 주요 스레드의 모든 시간 간격을 선택하도록 dotTrace에 요청하면 됩니다. 복잡하게 들릴 수 있지만 사실 이 필터 조합은 단 2번 클릭으로 작동시킬 수 있습니다.

Visual Studio에 통합된 타임라인 뷰 메소드 선언으로 이동

Visual Studio/Rider와 긴밀하게 통합

dotTrace는 Visual Studio/JetBrains Rider와 긴밀하게 통합되어, IDE를 벗어날 필요 없이 현재 개발 중인 애플리케이션 프로파일링을 시작할 수 있습니다. 또한 이제 타임라인 프로파일링 결과도 IDE에서 바로 확인하고 분석할 수 있습니다. 호출 트리에서 핫스팟 호출을 발견하셨나요? 해당 메소드 선언으로 즉시 이동하세요.

Visual Studio/JetBrains Rider와의 통합으로 IDE와 프로파일러 사이를 전환할 필요가 없으므로 프로파일링 작업이 거의 막힘 없이 진행됩니다.

비동기 호출 프로파일링

비동기 호출 프로파일링

dotTrace를 사용하면 비동기화된 코드를 간편하게 분석할 수 있습니다. 비동기호출의 모든 '부분'이 한 곳에 표시되므로 다양한 호출 스택에서 검색할 필요가 없습니다.

Visual Studio에서 바로 정적 메소드 프로파일링

정적 메소드 프로파일링

dotTrace에서는 코드 내 모든 정적 메소드를 즉시 프로파일링할 수 있습니다. 간단히 해당 메소드 위에 캐럿을 올려놓고, Alt+Enter를 누른 다음, 액션 목록에서 Debug(디버그) | Profile(프로파일)을 선택하면 됩니다.

이 기능으로 수행할 수 있는 작업을 상상해 보세요. 모든 코드 부분을 작성한 즉시 그 자리에서 프로파일링할 수 있습니다. 솔루션을 빌드하거나, 프로파일러에서 프로파일링을 실행하거나, 새 코드가 실행되는 사용 시나리오를 수행하는 등의 작업이 필요 없습니다.

원격 컴퓨터에서 프로파일링 실행

원격 애플리케이션 프로파일링

대부분의 경우, 로컬에서 실행되는 애플리케이션을 프로파일링합니다. 그런데 원격 웹 서버에서 지연되고 있는 애플리케이션의 경우는 어떻게 해야 할까요?

dotTrace는 원격 시스템에 연결하여 독립 실행형 또는 웹 애플리케이션 또는 Windows 서비스를 프로파일링할 수 있습니다. dotTrace를 원격 시스템에 설치할 필요도 없이 몇 개 파일만 복사하면 됩니다.

이미 실행 중인 프로세스에 프로파일러 연결

실행 중인 애플리케이션에 연결

dotTrace를 실행 중인 애플리케이션에 연결하여 프로파일링하고, 프로파일링 데이터를 캡처한 즉시 연결을 해제할 수 있습니다.

이 방식을 사용하면 프로파일러에서 애플리케이션을 실행할 때 발생하는 오버헤드를 최소화할 수 있습니다. 게다가 프로파일링할 때마다 애플리케이션을 다시 시작할 수 없는 운영 환경에서 성능 문제를 검사할 수도 있습니다.

유닛 테스트 프로파일링

유닛 테스트 프로파일링

Visual Studio + ReSharper* 번들 또는 JetBrains Rider**가 있으면 코드 에디터 또는 유닛 테스트 러너에서 유닛 테스트를 간편하게 시작할 수 있습니다.

* ReSharper가 설치되어 있지 않아도 NUnit, MSTest 또는 xUnit에서 제공하는 기본 유닛 테스트 러너를 여전히 프로파일링할 수 있습니다.

** 프로파일링 기능은 'ReSharper Ultimate + Rider' 또는 'All Products Pack' 라이선스를 보유한 사용자만 이용할 수 있습니다.

후속 HTTP 요청 분석

느린 HTTP 요청 분석

타임라인 프로파일링 스냅샷을 분석하는 경우, 웹 애플리케이션에서 후속 HTTP 요청이 처리되는 시간 간격을 필터링할 수 있습니다. 정확한 데이터를 확보해 정확한 근본 원인을 파악하고 느리게 실행되는 메소드에 초점을 맞추세요. 타임라인 프로파일링으로 웹 애플리케이션이 더욱 빨라집니다.

SQL 쿼리 분석

느린 SQL 쿼리 분석

타임라인 프로파일링을 사용하여 각각의 특정 쿼리가 애플리케이션 성능에 미치는 영향을 분석하세요. SQL Queries(SQL 쿼리) 필터는 모든 SQL쿼리 및 연결과 그 성능 통계를 표시합니다.

또한, 더 자세한 분석을 위해 쿼리 내용을 별도의 창에 열 수 있어 편리합니다. 1개 이상의 쿼리를 선택해 모든 데이터를 필터링하고 해당 쿼리가 실행되는 메소드를 검사할 수도 있습니다.

이제 비효율적인 SQL 쿼리를 모두 제거하세요.

dotTrace 프로파일링 API 사용

Profiling SDK

Profiling SDK를 사용하면 프로그래밍 방식으로 프로파일링 데이터 수집을 시작하거나 중단하고 수집된 스냅샷을 저장하는 등, 코드에서 바로 프로파일링 세션을 제어할 수 있습니다.

2가지 중요한 사용 시나리오도 지원됩니다. 첫째, 이 SDK를 사용하면 프로파일링 범위를 좁히고 프로파일링할 코드 부분을 선택할 수 있습니다. 두 번째 사용 시나리오는 셀프 프로파일링된 애플리케이션에 관한 것으로, 최종 사용자 시스템에서 애플리케이션이 동작하는 방식을 보여주는 통계를 수집할 수 있습니다.

프로파일러에서 유닛 테스트 빌드 단계 실행

지속적 통합 지원

dotTrace에는 프로파일링 스냅샷 수집을 자동화하는 데 사용할 수 있는 명령줄 프로파일링 도구가 포함되어 있습니다. 이 도구는 지속적 통합 빌드의 일부를 프로파일링하려는 경우 필수적입니다.

JetBrains TeamCity를 CI 서버로 사용하는 경우, TeamCity에 dotTrace 플러그인을 반드시 설치해야 합니다. 이 플러그인은 통합 테스트를 프로파일링할 때 애플리케이션 성능이 저하되는 것을 방지합니다. 테스트 실행 시간에 한도를 설정하기만 하면, 시간이 초과될 때 플러그인에서 자동으로 성능 스냅샷을 찍고 테스트를 실패시킵니다.

즉시 측정(시간 조정)

성능 향상 측정

시간을 잡아먹는 함수를 최적하는 데 오랜 시간을 쏟은 후, 해당 최적화가 실제로 효과가 있는지 확인하기 위해 처음부터 프로파일링을 시작해야 할 때가 있습니다.

dotTrace에서는 이러한 문제가 발생하지 않습니다. 애플리케이션을 다시 프로파일링하지 않아도 사용자가 설정한 시간 조정에 따라 프로파일러에서 스냅샷의 모든 함수 시간을 즉시 다시 계산합니다. 이 작업은 "이 함수를 40%까지 최적화하면 어떻게 되는가?"라고 프로파일러에 질문을 던지는 것과 같습니다. 간단히 특정 클래스에 있는 함수 1개 또는 전체 시간만 새로 설정하세요. 그러면 전체 스냅샷의 시간값이 다시 계산됩니다.

스냅샷 비교

스냅샷 비교

dotTrace는 동일한 애플리케이션의 성능 스냅샷 중 무엇이든 2가지를 비교할 수 있습니다. dotTrace는 각 함수에서 소비한 호출 수 및 시간의 차이를 표시하는 비교 스냅샷을 생성합니다. 비교 스냅샷은 일반 성능 스냅샷과 마찬가지 방식으로 확인 및 분석 가능합니다.

dotTrace 다운로드

10일간 실제 사용해볼 수 있는 무료 평가판 제공