성능 테스트 튜닝 모델, 아이디어 및 기술

최근에 "소프트웨어 성능 테스트, 분석 및 튜닝 실습 도로"라는 책을 읽었습니다. 개인적으로 성능 튜닝 장이 전체 책의 핵심이라고 생각합니다. 이 장에는 성능 테스트 튜닝 모델, 튜닝 아이디어 및 튜닝 기술이 포함되어 있습니다. 다음은 책에서 발췌한 내용입니다.

튜닝 모델

아래 그림은 인터넷에서 일반적인 사용자 요청의 레이어 포워딩 및 처리 과정을 나타낸 것으로, 성능 튜닝 과정에서  시스템의 성능 지표와 시스템 모델의 각 계층의 자원 소모량을 지속적으로 수집하여 성능 병목 현상 및 성능 문제를 찾아내고, 그런 다음 병목 현상과 문제를 분석 및 진단하여 성능 튜닝 솔루션을 결정하고 최종적으로 성능 압력 테스트를 통해 튜닝 솔루션이 효과적인지 여부를 확인합니다.유효하지 않은 경우 튜닝 솔루션이 효과적이고 병목 현상이 발생할 때까지 성능 분석을 위해 이 프로세스를 계속 반복합니다. 문제가 해결됩니다.

성능 테스트 튜닝 모델, 아이디어 및 기술

시스템 모델의 관련 구성 요소는 다음 표에 설명되어 있습니다.

구성 요소

설명하다

네트워크 배포

네트워크 분산은 급속도로 발전하는 인터넷 시대에 네트워크 혼잡을 줄이고 사용자의 요청에 신속하게 대응하기 위해 일반적으로 사용되는 기술적 수단으로, 가장 일반적으로 사용되는 네트워크 분산은 CDN(Content Delivery Network, 즉 콘텐츠 배포 네트워크)으로 에지에 의존한다. 전 세계에 배포된 서버는 중앙 플랫폼의 로드 밸런싱, 소스 서버 콘텐츠 배포, 스케줄링 및 기타 기능 모듈을 통해 전 세계 사용자가 중앙 플랫폼의 소스 서버로 이동하는 대신 근처에서 필요한 콘텐츠를 얻을 수 있습니다. 난징 사용자가 직접 접속하는 등 매번 응답 결과 배포 북경 극북에 배포된 서버에 접속하지 않고 남경의 에지 서버

웹 서버

웹 서버는 웹 서비스를 배포하는 데 사용되며 웹 서버의 역할은 요청에 대한 응답 및 배포와 정적 리소스 처리를 담당하는 것입니다.

웹 서비스

웹 서비스는 웹 서버에서 실행되는 서비스 프로그램을 말하며 가장 일반적인 웹 서비스는 Nginx와 Apache입니다.

웹 캐시

웹 캐시는 웹 레이어의 캐시를 말하며 일반적으로 HTML, CSS 및 이미지와 같은 정적 리소스 파일을 임시로 캐시합니다.

애플리케이션 서버

애플리케이션 서버는 Tomcat, WildFly, 일반 Java 애플리케이션(예: jar 패키지 서비스), IIS 등과 같은 애플리케이션을 배포하는 데 사용됩니다.

응용 서비스

응용 서비스란 Java 응용 프로그램, C/C++ 응용 프로그램, Python 응용 프로그램과 같이 일반적으로 사용자의 동적 요청을 처리하는 데 사용되는 응용 프로그램 서버에서 실행되는 프로그램을 말합니다.

애플리케이션 캐시

애플리케이션 캐싱은 애플리케이션 계층의 캐싱 서비스를 말하며 일반적으로 사용되는 애플리케이션 캐싱 기술로는 Redis, Memcached 등이 있으며 이러한 기술적 수단은 동적으로 확장되는 동시성 분산 애플리케이션 아키텍처에서도 자주 사용됩니다.

데이터베이스(DB)

데이터 저장을 위해 관계형 데이터베이스와 NoSql 데이터베이스(비관계형 데이터베이스)를 포함할 수 있습니다.일반적인 관계형 데이터베이스에는 Mysql, Oracle, Sqlserver, DB2 등이 있습니다.일반적인 NoSql 데이터베이스에는 Hbase, MongoDB, ElasticSearch 등이 있습니다.

외부 시스템

이는 현재 시스템이 다른 외부 시스템에 의존하고 있으며, 2차 요청을 통해 다른 외부 시스템으로부터 데이터를 얻어야 함을 의미합니다.때때로 많은 외부 시스템이 있을 수 있습니다.

튜닝 아이디어

1. 계층적 분석

계층적 분석은 다음 그림과 같이 시스템 모델 및 시스템 아키텍처와 콜 체인에 따른 모니터링, 분석 및 문제 해결을 의미합니다  .

성능 테스트 튜닝 모델, 아이디어 및 기술

  • 계층적 조사는 일반적으로 애플리케이션 아키텍처 수준과 시스템의 배포 아키텍처, 요청 처리 체인 프로세스에 대해 매우 잘 알고 있어야 합니다.
  • 계층적 조사는 일반적으로 계층별 체크리스트를 설정한 후 각 계층의 체크리스트에 따라 하나씩 분석합니다.
  • 계층적 문제 해결은 덜 효율적이지만 종종 더 많은 성능 문제가 발견될 수 있습니다.
  • 계층적 조사는 하향식 또는 상향식일 수 있습니다.

2. 과학적 증명

일반적으로 문제 발견, 문제 가정, 예측, 테스트 시연 및 분석이 포함됩니다 .

성능 테스트 튜닝 모델, 아이디어 및 기술

  • 문제발견 : 동시접속자수가 증가해도 TPS가 증가하지 않는 현상, 애플리케이션 서버별 CPU 사용량이 크게 달라지는 등의 성능 수집 및 모니터링을 통한 성능 병목 현상 또는 성능 문제를 발견하는 것을 말합니다.
  • 문제 가설: 어떤 요인으로 인해 병목 현상과 문제가 발생했다고 가정하고 자신의 경험에 근거한 판단을 말합니다.
  • 예측: 문제의 가정을 기반으로 나타날 수 있는 일부 현상이나 특성을 예측하는 것을 말합니다.
  • 실험적 실증 : 예측에 따라 예상되는 현상이나 특성을 확인하기 위해
  • 분석: 얻은 실제 현상이나 특성을 바탕으로 분석하여 가설이 맞는지 판단하고, 그렇지 않으면 이 과정에 따라 다시 분석하고 시연합니다.

과학적 실증 방법을 사용한 성능 분석 및 튜닝의 예는 아래 그림과 같습니다.

성능 테스트 튜닝 모델, 아이디어 및 기술

3. 문제 추적 및 유도

1. 문제 소급 분석

문제 추적성 분석은 문제에 따른 시스템이나 환경의 최근 변화를 추적하여 추적성과 설명을 통해 문제의 원인을 단계별로 찾아내는 것을 말하며 일반적으로 해당 제품의 버전 출시로 인해 발생하는 성능 문제에 적용할 수 있습니다. 생산 시스템이나 환경 변화. .

성능 테스트 튜닝 모델, 아이디어 및 기술

2. 요약 

경험 요약에 따르면 특정 성능 병목 또는 성능 문제가 발생하면 과거에 요약된 이유에 따라 하나씩 확인하십시오.

튜닝 기술

1. 캐시 튜닝

성능 테스트 튜닝 모델, 아이디어 및 기술

캐싱 튜닝의 핵심 사항:

  • 캐시 적중률을 높이는 방법은 무엇입니까?
  • 캐시 침투를 방지하기 위해 주의를 기울이는 방법은 무엇입니까?
  • 캐시 만료 시간을 제어하는 ​​방법은 무엇입니까?
  • 캐시 모니터링 및 분석을 잘 수행하는 방법은 무엇입니까? 예를 들어 느린 로그 분석, 연결 수 모니터링 및 메모리 사용량 모니터링이 있습니다.
  • 캐시 사태를 방지하는 방법은 무엇입니까?

그 중 캐시 사태는  서버가 정전과 같은 극단적인 비정상적인 상황에 처한 후 캐시에 있는 모든 데이터가 손실되어 데이터베이스에서 직접 데이터를 가져와야 하는 많은 요청이 발생하여 결과적으로 데이터베이스에 대한 과도한 압력으로 인해 데이터베이스 충돌이 발생합니다. 캐시 사태를 방지하려면 주의 사항이 필요합니다.

  • 캐시된 데이터가 모두 손실된 후 데이터를 캐시에 빠르게 다시 로드하는 방법.
  • 캐시 데이터의 분산 중복 백업, 데이터 손실 발생 시 백업 데이터를 신속하게 전환할 수 있습니다.

2. 동기식에서 비동기식으로 푸시

동기화: 시스템이 요청을 받은 후 요청이 처리될 때까지 처리가 완료될 때까지 응답 결과를 반환하지 않는 것을 의미합니다. 아래 그림과 같이:

성능 테스트 튜닝 모델, 아이디어 및 기술

비동기식: 동기식과 비교할 때 비동기식은 시스템이 요청을 받은 후 요청이 성공적으로 수신되었음을 요청 발신자에게만 반환하는 것을 의미합니다.요청 결과를 다시 얻을 시간입니다. 아래 그림과 같이:

성능 테스트 튜닝 모델, 아이디어 및 기술

동기식에서 비동기식으로의 변환은 주로 동기식 요청의 차단 및 대기를 해결하기 위한 것입니다.차단 및 대기 중인 요청은 종종 연결을 빨리 해제할 수 없게 하여 동시 처리가 높아집니다.연결 수는 다음과 같습니다. 대기열을 통해 비동기식으로 요청을 받은 후 요청 핸들러 분산 병렬 처리를 수행하여 처리 용량 확장을 달성하고 네트워크 연결도 신속하게 해제할 수 있습니다.

3. 분할

분할은 시스템의 복잡한 비즈니스 호출을 여러 개의 단순 호출로 분할하는 것을 말하며 일반적으로 따르는 원칙은 다음과 같습니다.

  • 높은 동시성 비즈니스 요청 호출의 경우 단일 하위 시스템 애플리케이션으로 별도로 분할됩니다.
  • 동시방문이 유사한 업소의 경우 상품업종별로 분할할 수 있으며, 동일한 상품업종은 새로운 서브시스템으로 분류된다.

성능 테스트 튜닝 모델, 아이디어 및 기술

시스템 분할의 장점은 높은 동시성 서비스가 낮은 동시성 서비스의 성능에 영향을 미치지 않으며 시스템이 하드웨어를 확장할 때 리소스 낭비를 방지하기 위해 대상 방식으로 확장할 수도 있다는 것입니다.

4. 작업 분해 및 병렬 컴퓨팅

작업 분해 및 병렬 컴퓨팅은 작업을 여러 하위 작업으로 분할한 다음 여러 하위 작업에 대해 병렬로 계산을 수행하고 마지막으로 병렬 컴퓨팅 결과를 결합하여 반환하면 됩니다. 병렬 컴퓨팅을 통해 처리 성능을 높이는 것이 목적입니다.

성능 테스트 튜닝 모델, 아이디어 및 기술

또한 여러 처리 단계를 포함하는 직렬 작업의 경우 아래 그림과 같이 병렬 컴퓨팅 처리로 변환을 시도할 수 있습니다.

성능 테스트 튜닝 모델, 아이디어 및 기술

5. 인덱스 및 하위 데이터베이스 하위 테이블

색인 

이는 응용 프로그램이 질의할 때 데이터베이스 색인 질의를 사용하도록 시도해야 함을 의미하며, 데이터베이스 테이블이 생성될 때 질의 조건의 필드에 대한 적절한 색인도 설정하도록 시도해야 합니다.여기서 적절한 색인이어야 합니다. 인덱스가 제대로 설정되지 않으면 쿼리 효율성에 영향을 미치지 않을 뿐만 아니라 인덱스가 설정되면 데이터가 생성될 때 인덱스가 자동으로 업데이트되기 때문에 데이터 삽입 시 데이터베이스 테이블이 느려집니다. 삽입할 때 데이터베이스의 리소스 소비가 증가합니다.

하위 라이브러리 

일반적으로 데이터베이스의 저장소가 이미 매우 크고 쿼리 및 삽입 시 I/O 소비가 매우 크다는 것을 의미합니다. 이때 데이터베이스를 두 개의 라이브러리로 분할하여 읽기 중 I/O 압력을 줄여야 합니다. 그리고 쓰기.

성능 테스트 튜닝 모델, 아이디어 및 기술

하위 데이터베이스 하위 테이블의 일반적인 방법은 다음과 같습니다.

  • Hot 데이터와 Cold 데이터를 분리하는 방법에 따르면 일반적으로 사용 빈도가 높은 데이터를 Hot Data, 쿼리 빈도가 낮거나 거의 쿼리하지 않는 데이터를 Cold Data라고 합니다. , hot data를 따로 저장하는 방식으로 데이터의 양이 줄어들고 자연스럽게 쿼리의 성능이 향상되며, hot data만을 위한 I/O 성능 튜닝도 더욱 편리해집니다.
  • 시간 차원에 따라 : 예를 들어 실시간 데이터와 과거 데이터에 따라 데이터베이스와 테이블을 구분할 수 있으며 연도, 월 등 이벤트 간격에 따라 데이터베이스와 테이블을 구분할 수도 있다. 데이터베이스 테이블의 데이터를 가능한 한 많이
  • 특정 알고리즘에 따른 계산 방법 : 이 방법은 일반적으로 데이터가 핫 데이터인 상황에 적용할 수 있습니다. 크기가 큰. 이 시점에서 데이터의 특정 필드를 기반으로 알고리즘 계산을 수행할 수 있습니다(이 필드는 일반적으로 데이터 쿼리 중 검색 조건 필드임). 그러면 데이터가 서로 다른 하위 테이블에 고르게 포함될 수 있으며 그에 따라 쿼리할 수 있습니다. 조건 필드의 쿼리 알고리즘 계산으로 쿼리해야 하는 테이블을 빠르게 찾을 수 있습니다.

데이터를 데이터베이스와 테이블로 나눈 후 또 다른 이점은 단일 쿼리에서 여러 하위 테이블을 쿼리해야 하는 경우 각 하위 테이블을 다중 스레드 병렬 방식으로 쿼리할 수 있고 마지막으로 각 하위 테이블을 쿼리할 수 있다는 것입니다. 하위 테이블의 쿼리 결과를 한 번에 병합할 수 있으므로 쿼리를 보다 효율적으로 만들 수 있습니다.

실제 사례

광학 이론은 쓸모없고 따라하는 법을 배워야하고 스스로해야하므로 배운 것을 연습에 적용 할 수 있습니다.이때 실제 전투 사례에서 배울 수 있습니다.

도움이 되셨다면 좋아요와 모아 작가님에게 힘이 되어주세요. 다음에도 빠르게 찾을 수 있어 편리합니다.

이해가 되지 않으면 아래의 작은 카드를 참조하십시오. 블로거도 같은 생각을 가진 테스터와 함께 배우고 발전하기를 희망합니다.

적절한 나이에 적절한 위치를 선택하고 자신의 이점을 최대한 활용하십시오.

내가 계획하고 요약하는 것을 좋아하기 때문에 자동화된 테스트 개발의 길은 각 단계의 계획과 분리할 수 없습니다.

비디오 튜토리얼을 테스트 및 개발하고, 노트를 공부하고, 포털을 받으세요! ! !

おすすめ

転載: blog.csdn.net/m0_59868866/article/details/132219455