집 >백엔드 개발 >C#.Net 튜토리얼 >ASP.NET 성능 모니터링 및 최적화 시작하기
인프라 측정항목은 애플리케이션 측정항목에 연결된 경우에만 가장 효과적입니다.
효율적인 성능 최적화의 핵심은 성능 데이터에 있습니다.
일부 APM 도구는 ASP.NET에 대한 기본 지원을 제공하므로 ASP.NET을 시작하려면 최소한의 초기 설정이 필요합니다.
코드 분석 도구는 프로그램 성능에 대한 가장 자세한 보기를 제공합니다.
경량 분석 도구는 웹 페이지 성능에 대한 실시간 보기를 제공하며 개발 및 생산 환경 모두에서 사용할 수 있습니다.
"이 웹 페이지가 너무 느리게 열립니다!" 웹 사이트에 대한 이러한 불만은 특히 웹 응용 프로그램이 점차적으로 데스크톱 응용 프로그램을 대체하기 시작한 이후 자주 발생합니다. 웹은 글로벌 전달과 같은 이상적인 기능을 제공하지만 성능 수준에서는 이에 상응하는 과제도 제시합니다.
사용자가 "느린" 웹페이지의 URL을 제공했는데 어떻게 해야 합니까? 느린 웹 페이지 열기 문제는 어디에서 발생합니까? 처음부터 이렇게 느린 걸까요? 모든 사용자에게 느린가요? 느린 웹 페이지 열기 문제를 해결하고 일주일 후에도 다시 느려지지 않도록 하기 위해 해결해야 할 이와 같은 문제가 많이 있습니다.
인터넷에서 일부 성능 최적화 정보를 검색할 수 있지만 일반적으로 Jit, 가비지 수집, SQL 쿼리 최적화, ORM 트랩 등과 같은 특정 주제에 관한 것입니다. 최적화 구현에 대한 매력적인 전망을 고려할 때 다음과 같은 질문이 제기됩니다. 선택한 최적화 방법이 실제로 현재 성능 문제에 대해 좋은 결과를 생성할 것인지 어떻게 알 수 있습니까?
이 작품에는 뭔가 빠진 것이 있다는 것은 의심의 여지가 없습니다. 지속적으로 성능 문제를 찾는 방법이 필요합니다. 이 접근 방식을 사용하면 시스템의 느린 부분을 식별하고 성능 문제 진단을 지원하는 실질적인 조치를 취할 수 있습니다. 성능 문제가 어디에 있는지 이해하면 성능 개선이 필요한지 여부를 추가로 판단하고 이 모든 것을 이해관계자에게 설명할 수 있습니다.
위에서 언급한 성능 문제가 발견되면 정확한 식별이 이를 처리하는 보다 효과적인 방법입니다. 문제는 애초에 웹페이지 로딩 속도가 느린 것이 아닐 수도 있습니다. 시간 초과가 있는 경우(예: 로드 밸런서가 연결을 서비스하기 전에 몇 초 동안 기다릴 수 있음) 교착 상태 문제인지 느린 응답 시간 문제인지 구분하는 것은 불가능합니다. 두 문제 모두 동일한 원인이 되기 때문입니다. 시간 초과. 문제의 실제 원인을 찾으려면 데이터가 필요합니다.
성능 문제를 정확하게 식별하는 것의 중요성을 설명하기 위해 웹 애플리케이션의 응답 속도를 저하시키는 몇 가지 가능한 문제 해결 지점은 다음과 같습니다.
JavaScript가 느리게 반응합니다.
리소스 로딩 중 차단이 발생합니다.
클라이언트 측에 프록시가 있습니다.
DNS 문제
이러한 트리에서 수준별로 아래로 내려갈수록 성능 문제가 점점 더 명확해집니다. 각 문제 해결 수준에서 성능 문제를 찾는 데 필요한 데이터는 해당 문제의 정확성과 일치해야 합니다. 이때 성능 분석 도구나 SQL 실행 계획 등의 도구를 활용하는 것이 필요하다.
시간을 효율적으로 사용하려면 암달의 법칙을 반복해야 합니다:
작업이 아무리 개선되더라도 개선의 이점을 얻지 못하는 작업 부분은 이론적 작업 속도 향상을 제한합니다.
예를 들어 웹 요청의 경우 서버 처리 시간은 100ms, SQL 쿼리 시간은 5초가 소요된다고 가정합니다. 서버 처리 시간을 1밀리초 미만으로 최적화할 수 있더라도 전체 응답 시간의 개선 효과는 5.1초에서 5초로 작습니다. SQL 처리를 개선하는 데 필요한 5초는 잠재적인 이득이 가장 큰 최적화입니다.
최적화 문제를 계층별로 명확히 하는 이러한 하향식 방법은 단일 페이지로 제한된 최적화 문제에 좋은 영향을 미칩니다. 그렇다면 여러 페이지에 걸쳐 있는 최적화 문제에 적용하면 어떤 영향이 있을까요? 예를 들어, 일부 페이지가 간헐적으로 느리게 열리는 문제는 하위 시스템이 전체 작업 리듬을 따라갈 수 없거나 시스템을 다시 시작한 후 더 이상 작동하지 않는 오래된 네트워크 스위치가 있기 때문에 발생합니다.
이 경우 애플리케이션 중심 모니터링 접근 방식은 한계를 보여줍니다. 이를 위해서는 시스템의 각 구성 요소를 평가하기 위해 더 많은 소프트웨어 수준 및 하드웨어 수준 지표가 필요합니다.
하드웨어 수준에서 가장 먼저 떠오르는 것은 웹 서버와 데이터베이스 서버이지만 이는 빙산의 일각에 불과합니다. 시스템의 모든 하드웨어 구성 요소를 식별하고 모니터링해야 합니다. 여기에는 서버, 네트워크 스위치, 라우터, 로드 밸런서, 방화벽, SAN 등이 포함됩니다.
시스템 관리자의 정규 업무가 하드웨어 모니터링이라는 점을 고려하면 위의 모든 지표는 시스템 관리자에게 분명할 수 있습니다. 그러나 여기에 중요한 주의 사항이 있습니다. 이러한 모든 하드웨어 지표의 대부분은 소프트웨어 지표와 별도로 취급되는 경우 성능 관점에서 쓸모가 없습니다. 즉, 지표는 적절한 환경에 배치된 경우에만 가장 잘 작동할 수 있습니다.
예를 들어, 어떤 경우에는 데이터베이스 서버에서 CPU 사용량이 평균 50%인 것이 완전히 정상일 수 있지만 다른 서버의 경우 이는 시한폭탄입니다. 사용량이 가장 많은 시간대에 CPU 사용량이 50%라는 것은 더 많은 작업을 실행할 수 있는 공간이 여전히 많다는 것을 의미합니다. 그러나 유휴 기간 동안 50%의 CPU 사용량이 자주 발생하는 경우 이는 애플리케이션이 들어오는 요청의 갑작스러운 급증을 견딜 수 없음을 의미합니다.
요점은 시스템 상태를 평가하려면 CPU, 메모리, 디스크와 같은 시스템 전반의 지표가 애플리케이션 지표와 상관 관계가 있어야 한다는 것입니다. 시스템 상태에 대한 보다 완전한 보기를 제공하기 위해 요청 처리량과 같은 애플리케이션 메트릭과 CPU 사용률과 같은 시스템 메트릭을 시각화할 수 있습니다.
APM 도구는 데이터 수집, 데이터 저장, 데이터 시각화와 같은 기본 작업을 제공합니다. 일반적으로 에이전트는 데이터를 수집하여 데이터 저장소로 보내고, 웹 인터페이스를 사용하여 웹 요청에 초점을 맞춘 대시보드에서 데이터를 시각화하는 일을 담당합니다.
APM은 다음 용도로 사용할 수 있습니다.
웹 애플리케이션 성능에 대한 전반적인 시각화 제공
특정 웹 요청 성능을 시각화합니다.
웹 애플리케이션 성능이 저하되거나 여러 오류가 발생하면 자동으로 알림을 보냅니다.
비즈니스 규모가 큰 경우, 애플리케이션의 응답 모드를 확인하십시오.
여기에 예가 나와 있습니다.
다음은 기본적으로 ASP.NET 및 IIS를 지원하는 APM 도구의 전체 목록입니다.
뉴렐릭 APM
애플리케이션 인사이트
앱다이내믹스
스택파이
인프라 모니터링 도구는 성능을 보다 완전하게 반영할 수 있는 호스트 수준에서 지표를 수집합니다. 이러한 측정항목은 하드웨어 및 소프트웨어 수준에서 수집됩니다.
데이터독
OpServer - 오픈 소스
경량 분석 도구는 특정 웹 요청에 대한 높은 수준의 지표를 제공하고 개발자가 웹 페이지를 탐색할 때 실시간 피드백을 제공합니다. 이러한 도구는 모든 환경 유형(개발 환경, QA 검증, 스테이징 환경, 프로덕션 환경 등 포함)에서 사용할 수 있으므로 특정 페이지 성능을 빠르게 평가하는 데 이상적입니다.
해당하는 모든 기능을 갖춘 분석 도구와 비교할 때 경량 분석 도구의 근본적인 차이점은 프로세스에 연결되지 않는다는 것입니다. 즉, 경량 분석 도구를 사용할 때 발생하는 오버헤드에 대해 걱정할 필요가 없습니다.
개발 환경에서는 경량 분석 도구가 현재 작성 중인 코드에 대한 실시간 피드백을 제공합니다. 응답 시간은 항상 페이지 모서리에 표시되므로 N+1 또는 느린 응답 시간과 같은 문제를 발견하는 데 매우 유용합니다.
오픈 소스 MiniProfiler
오픈소스 살펴보기
Windows 시스템의 성능 카운터(성능 카운터)는 하드웨어 및 소프트웨어 수준에서 다양한 표시기를 제공합니다. 모니터링 도구는 CPU 및 메모리 사용량과 같은 성능 카운터를 보고하는 경우가 많습니다. 그러나 가비지 수집 시간 등과 같은 일부 유용한 카운터가 누락되는 경우가 많습니다. 시작하는 가장 실용적인 방법은 기본 목록을 사용하고 필요한 관련 카운터를 반복에 추가하는 것입니다. 또한 perfmon을 사용하면 성능 카운터를 실시간으로 수집하고 시각화할 수 있습니다. 많은 경우 사용자 정의 지표나 플러그인을 APM 도구와 통합하는 것도 가능합니다.
데이터베이스는 많은 애플리케이션에서 일반적으로 사용되므로 지속성 계층(즉, SQL 데이터베이스)은 성능 병목 현상이 발생하는 경우가 많습니다. SQL 모니터링을 위한 전문 도구는 리소스 사용량 메트릭뿐만 아니라 대기 시간, 초당 컴파일 등과 같은 특정 메트릭도 제공할 수 있습니다.
다음 데이터를 제공하면 일부 유형의 문제를 발견하고 성능을 향상할 수 있습니다.
하나 이상의 쿼리에 대한 과도한 처리량
쿼리 문제 또는 인덱스 누락을 시사하는 과도한 CPU 사용량. 캐시할 수 있는 처리량이 높은 쿼리입니다.
SQL 모니터링 도구에는 다음이 포함됩니다.
SQLSentry 성능 조언자
기타 지속성 시스템
JetBrains dotTrace
메모리 분석 도구
RedGate Ants 메모리 프로파일러
클라이언트 분석 도구
파이어폭스
페이지 분석 도구
위 내용은 ASP.NET 성능 모니터링 및 최적화 시작하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!