2009-07-02 3 views
3

Google 애플리케이션 중 일부 성능 문제가 있습니다. 나는 dotTrace와 같은 것을 사용하여 문제가 어디에 있는지를 알았지 만, dotTrace는 아마도 성능을 더욱 떨어 뜨릴 것입니다.프로덕션 ASP.NET 응용 프로그램을 어떻게 프로파일 링합니까?

성능에 영향을 미치지 않는 환경에서 응용 프로그램을 너무 많이 프로파일 링하는 가장 좋은 방법은 무엇입니까?

+0

응용 프로그램의 구조에 대해 더 자세히 설명 할 수 있다고 생각하십니까? 당신이 사용하는 도서관과 그것을 구성하는 방법은 당신에게 더 많은 피드백을 줄 수 있습니다. – roundcrisis

답변

3

일반적인 대답은 "하지 마라"입니다.

이외의 성능 카운터를 사용하면 많은 이점을 얻을 수 있습니다. 내장 된 카운터가 도움이되지 않으면 자신 만의 카운터를 만들 수 있습니다.

성능 카운터를 사용하면 부하 테스트를 통해 성능 문제를 재현하는 방법을 알 수 있습니다.

다음 아이디어는 관심있는 영역을 좁히는 것입니다. 느린 웹 서비스 액세스로 밝혀지면 전체 응용 프로그램의 성능에 영향을 미치지 않습니다.

다음으로, 바람직하게 구성을 사용하여 응용 프로그램을 계측하십시오. Enterprise Library Logging Application Block은 응용 프로그램에 로깅을 추가 할 수 있지만 구성을 해제 할 수 있으므로 유용합니다. 그런 다음 어떤 종류의 정보를 기록하고 어디에 기록 할지를 구성 할 수 있습니다.

로깅에서 이벤트 로그로의 이동과 XML 파일 로깅에 이르기까지 로깅이 얼마나 비싼 지 선택할 수 있습니다. 그리고이를 런타임에 모두 결정할 수 있습니다.

마지막으로 dotTrace 또는 실행중인 응용 프로그램에 코드를 추가하기 위해 IIS를 다시 시작해야하는 다른 기능을 사용할 수 없습니다. 생산 중이 아닙니다. 위의 아이디어는 그렇게 할 필요가없는 목적을위한 것입니다.

+0

Perf 카운터는 가장 친한 친구입니다. 내장 된 것뿐만 아니라 응용 프로그램도 수십 개 심지어 수백 개의 새 카운터를 노출 할 수 있습니다. 또한 XML/CSLT 변환을 사용하여 Perf 카운터를 쉽게 생성하는 방법에 대해 블로그에 게시했습니다. http://rusanu.com/2009/04/11/using-xslt-to-generate-performance-counters-code/ –

0

당신은 사용할 수 개미 프로파일

http://www.red-gate.com/products/ants_performance_profiler/index2.htm

그들은 "오버 헤드가 거의 두드러졌다"고 주장한다.

14 일 무료 평가판이 있으므로 시험해 볼 수 있습니다.

편집 : 나는 John의 의견에 동의하며, 중단되거나, 중단되거나, 중단되거나 중단 될 수 있습니다. 병목을 확인하기위한 테스트 환경에서 사용하는 것이 가장 좋습니다.

+0

나는 ' ANTS를 실행할 수있는 많은 제작 상점을 알고 있습니다. IIS를 다시 시작해야합니까? 코드에 계측 명령을 추가하거나 스택 추적을 저장하기 위해 정기적으로 인터럽트를 수행해야합니까? 그렇다면 생산 과정에서 위험을 무릅 쓰고 너무 파괴적이라고 간주 될 수 있습니다. –

0

프로덕션 환경의 실제로드 근처에있는 여러 세션에서 응용 프로그램을로드 테스트 했습니까?

가장 먼저 떠오르는 점은 응용 프로그램이로드가 잘되지 않거나 db가 크기가 커지면서 크기가 조정되지 않는다는 것입니다 (동시 세션의 수가 제한되어 있어도이 문제가 발생 함). 정말 아무것도 될 수 있습니다.

제 제안은 프로덕션 환경을 복제하고 적절한로드 테스트를 실행 한 다음 데이터를 살펴보면 약간의 단서가 생깁니다.

당신은 프로덕션 환경에서 게임을하고 싶지 않지만, 아직 가지고 있지 않다면 로깅을 사용하여 키 이벤트의 순서와 시간을 추적하고 거기에서 가져올 수 있습니다.

+0

우리는 재현하려했지만 성공하지 못했습니다. –

0

나는 모든 보면, 생산의 프로세스의 여러 메모리 덤프를 취할 추천 패턴을 찾았는지 확인하십시오.

1

프로파일 링 메모리 또는 cpu?

메모리 : 가장 좋은 방법은 w3wp 프로세스의 메모리 덤프를 만드는 것입니다 WinDbg. 그리고 어떤 수업이 가장 많은 메모리를 소비하는지보십시오. WinDbg를 사용하고 .NET 힙을 분석하는 방법)에 대한 많은 질문/답변이 Stackoverflow에 있습니다.

CPU : 우리가 샘 사프란 (떠올리게, 유래의 제작자 중 하나!) 그의 프로젝트가 포기하여 간단한 명령 줄 프로파일 러를 사용하지만, 우리가 그것을 포크 여기를 유지합니다. https://github.com/jitbit/cpu-analyzer 누구나 제공 할 수 있습니다. Microsoft의 DbgManager을 사용하여 스레드에 연결하고 실행하는 데 가장 오랜 시간이 걸리는 호출 스택을 찾습니다.

관련 문제