[인터페이스 인터페이스 압력 측정 성능 분석 및 튜닝 권고

일반 인터넷 아키텍처, 일반적으로 내가 서비스를 제공하는 회사에 그림 봄 + MyBatis로 + MySQL의 +의 레디 스를 볼 수있는 것도 사실이다. 일반적으로, 애플리케이션 인터페이스 직접 내부 전화가 유사한 전송 서비스 프레임 워크 보행 직접 또는인가라는 인터페이스 지향 프로그래밍의 콜처럼 종종 JSON 포맷 데이터, 즉, 각각의 데이터는 통합 편리를 사용 및 값 사이의 변환을 수행하거나, 일반적으로 사용되는 memcached 캐시 저장 문자열 또는 객체 JSON 형식들을 레디 스. 외부 인터페이스를 제공, 일반적으로 성능을 평가하고, 조정의 향후 방향에 대한 지침을 제공하기 위해 스트레스 테스트를 수행하는 데 필요한 다음과 같은 인터페이스가 "이상한 현상"다양한이 시험 중에 언론에 등장의 참조, 이상한 소위 우리의 일반적인 논리가보기의 모양 지점에서 아이디어를 일치하지 않지만, 그 본질은 압력 특성에 따라 우리의 프로그램에 각성과 지식의 구조를 설명하는 일반적인 시도에 익숙하지 않은, 이것은 단순히 가능하지 않습니다. 다음은 데이터 집계의 철저한 공정 후 측정 된 압력의 내 분석, 분석 및 개선 조치가 나는 그것이 훌륭한 레퍼런스 값을 가지고 있다고 생각 압력 일반적인 측정, 많은 수있는 현상이다. 다음과 같은 세부 사항은 :( I는 1N3T를 나타낸 바와 같이 상기와 같은 모양의 부분은 그 보안 이름 생략되어 있지만, 분석에 영향을 미치지 않는다 인터페이스 전과 션 최적화 후의 테이블의 nginx 3 세트 톰캣, TPS 특정 값 만 CF, 진짜 의미)

 

1 인터페이스의 이름 : 목록을 가져옵니다

압력 1.1 현상을 측정 : 단일 tps700 다중 응용 프로그램이 높은 CPU 부하를

  1.1.1 분석 :

    오래된 프레임 워크, 평균 응답 시간, 고의 CPU 응용 프로그램 긴, 데이터베이스 연결 수를 수정, JSON 사이의 빈 변환을 매핑하는 내부 절차의 큰 숫자, TPS는 개선되지.

  1.1.2 개선 사항 :

    DAO와 동작 대안의 MyBatis 전에 재구성 시스템은, 내부 프로그램의 불필요한 동작을 제거하기 위해, 내부 빈 맵을 JSON 간의 데이터 전송을 감소시킨다.

  1.1.3 향상된 결과 :

    3000, 많이 개선 후 개선 할 수 있지만, 거의 측정 된 압력이 이상 실행 CPU의 응용 프로그램 TPS, 개선의 여지가있다.

압력 1.2 현상을 측정 : 높은 자원 활용도 데이터베이스

  1.2.1 분석 :

    하나의 응용 프로그램이 데이터베이스 리소스가 50 %, 다음 만 동시 데이터베이스 CPU를 통해 실행 10 톰캣에 CPU 수, 부하 값이 700보다이지만, DB 11,554 QPS는하지만, 그 많은, 그것은 것을 의심하지 SQL 실행 비용 CPU는, 인덱스 또는 인덱스하여 SQL 실패 찾을 수있는 바되지 않을 수 있습니다.

  1.2.2 개선 사항 :

    보기 SQL 파일은 다음과 같은 SQL :! SELECT COUNT (1) order_status_id = 40,이 프로그램을 통해 주문에서 ORDER_ID 선택 변경 수주를 발견하고 order_status_id = 40 개 필터 밖으로! ()는 list.size 통과합니다. 이 때문에 order_status_id 심지어 인덱스를 추가! 이 이동하지 않도록 = 비교, 인덱스에 따른 높은 CPU의 결과로 찾을 수

  1.2.3 향상된 결과 :

    동일한 환경 (하나 개의 nginx 10 부 톰캣 1000 동시)에 따라, TPS는 3000 약간 증가는 CPU DB를 3727된다 감소하지만, 30 %가되고, 그 효과는 분명

1.3 현상 측정 압력 : 1N15T, tps4552, 10N15T을 tps9608

  1.3.1 분석 :

    백 엔드는 9608에 nginx를 10 개 정맥 주사 매달려 1 4552에 프런트 데스크의 nginx의 TPS는, 성장이 명확하지 않다 (15) 바람둥이, 때, 그것의 nginx와 바람둥이 많은 압력, 무리한 클러스터 결과, 의심 nginx를 전달 구성하지 않습니다 질문;

  1.3.2 개선 사항 :

    더 이상의 개선 :의 nginx의 매개 변수를 조정해야 할 수도가, nginx를 이전에 다른 구성의 TPS에 큰 영향을 발견하지 백엔드 클러스터 환경

  1.3.3 향상된 결과 :

 

 

2 인터페이스 이름 : 인터페이스 정보 쿼리

압력 측정 2.1 현상 : 단일 TPS2000 높은 애플리케이션 CPU, qps15000의 DB에 관한

  2.1.1 분석 :

    올드 프레임 워크 내부 절차는 보 -지도 - JSON 상호 변환을 많이 가지고

  2.1.2 개선 사항 :

    연결의 MyBatis를 사용, 가방 교체를 풀링, 중복 코드를 제거

  2.1.3 향상된 결과 :

    TPS는 높은 압력 측정 애플리케이션에 최적화 된 CPU 사용률이 거의 치여 9000에 대한 QPS)의 DB (이상 8,000 이상 2,000로 증가.

 

압력 2.2 현상을 측정하지 : 데이터베이스를 여러 응용 프로그램을 변경 TPS 후 어떤 압력 증가를

  2.2.1 분석 :

    5000만큼 1N1T 및 TPS의 1N10T는 톰캣 간의 연결 nginx에 dB로 스트레스가없는, SS는 -s로 채워진 하나의 nginx 발견 포트, 에러의 수가 동시 애플리케이션 CPU가 70 %의 비용 증가, 즉 전달 상승 포트 60,000 것보다 상태가 더 많은 시간이-기다립니다. Nginx에 병목 현상.

  2.2.2 개선 사항 :

    Nginx의 조정 파라미터는, 길이가 짧은 커넥터에 접속되고

  2.2.3 향상된 결과 :

    TPS의 1N3T 자원 염기의 사용량에인가 qps18000, cpu69 %이고, dB의, 17,376 84 %의 CPU 압력 tomat 가고.

 

 

3 인터페이스 이름 : 자세한 내용보기

압력 측정 3.1 현상 : 3700 전에 하나의 응용 프로그램 tps2600,10 바람둥이 대만

  3.1.1 분석 :

  응용 프로그램 서버를 증가, TPS의 성장은 분명하지 않고, nginx를, 바람둥이, DB 부하는 문제가 이상 실행 발견 모니터링 네트워크 카드 네트워크 데이터 패킷 트래픽, 네트워크 아니라고 생각, 서버 자체가 병목이 불가능하다는 것을 나타냄 높지 않은이 인터페이스가 있기 때문에 출력 데이터 다량 때문에 네트워크 병목. 또한, 테스트 프로세스 레디 스 오류를 발견 한 레디 스 서버는 가상 머신, 그것은 제한된 서비스 기능을 가질 수있다.

  3.1.2 개선 사항 :

    Gzip 압축은 바람둥이에 돌았 다.

  3.1.3 향상된 결과 :

    동일한 동시에 언더 (대만 Nginx에 10 개 단위 톰캣 1000 동시)는, TPS는 효과가 중요한, 3,727에서 10,022로 약 3 배의 증가를 증가.

 

3.2 압력 측정 현상 : TPS 클러스터의 nginx 파라미터 튜닝 크게 1N10T의 효과를 향상

  3.2.1 분석 :

    1, 10022 이하로 TPS GZIP 톰캣 1N10T 사용하면 더욱 개선된다.

  3.2.2 개선 사항 :

    최적화의 nginx :

    리터의 nginx 로그 오프

    패 nginx를 24 내지 16에서, 작업자의 수를 처리 할

    킵 얼라이브의 수에 의해 2048 리터의 nginx 256

  3.2.3 향상된 결과 :

  TPS는 10022의 13270 승진.

TPS 이하의 1N5T 및 1N10T : 압력 3.1 현상을 측정

  3.1.1 분석 :

    TPS의 1N10T에 10,003 천원, 10 002000, 이하 TPS의 1N5T이, 바람둥이 응용 프로그램의 리소스 사용률이 가득 차지 않은, CPU는 65 %, QPS의 DB는 20,000 명 이상에 도달하고, 단일 서버 가지고있다 실질적 양에 따라서 만 상기 응답 시간의 결과, 애플리케이션의 효과를 증가하지 않은 DB은 길어진다.

  3.1.2 개선 사항 :

    단일 DB 개선, 또는 서버 하드웨어 또는 별도의 읽기 및 쓰기를 업그레이드하지 않았다.

  3.1.3 향상된 결과 :

 

 

4 인터페이스 이름 : 추진

4.1 압력 측정 현상 : 레디 스 1000 TPS를 통해 데이터를 액세스하고, CPU 압력

  4.1.1 분석 :

    이 인터페이스는 데이터 레디 스, TPS 내부 프로그램 시퀀스 직렬화 동작의 큰 수를 나타내는 뇌 이상 1,000 만, 80 %의 CPU 점유율, JSON 직렬화 문제 일 수있다 걸린다.

  4.1.2 개선 사항 :

    fastjson 알리바바의에 net.sf.json.

  4.1.3 향상된 결과 :

    5000 개가 넘는으로 추진 1,000 명 이상의 동시하여 동일한 조건 TPS에서 거의 5 배 증가했다.

  

압력 측정 4.1 현상 : TPS 매개 변수가 유의하게 감소 긴 시간

  4.1.1 분석 :

    레디 스 파라미터 데이터를 얻기 위해이 인터페이스있어서, 파라미터 tps5133, 파라미터 5 개 세트의 집합 tps1169은 여러 상호 작용 처리 성능에 영향을 미치는 각 파라미터 레디 스 상호 작용 시간.

  4.1.2 개선 사항 :

    레디 스는 MGET으로 변경되는 데이터는 상호 작용의 수를 줄일 수.

  4.1.3 향상된 결과 :

    심지어 하나의 바람둥이를 추정에 따라 매개 변수 1N3T 압력 측정 TPS9707의 다섯 개 세트, TPS는 전화를받을 수있는 하나의 방법보다 3 또는 사천, 성능 3,4 시간 더 할 수 있습니다합니다.

압력은 4.2 현상을 측정 : 1N3T를 천 tps1, 성장이 증가하지 않습니다 크게 바람둥이 수도 TPS

  4.2.1 분석 :

    여기 때문에 CPU의 Nginx의 서버 동안 높지 말할 수 있지만, 800 개 이상의 PPS의 (k)를 가지며,이 시간은 Nginx의 서버 네트워크 트래픽이 병목 현상이 발생해야한다. (그냥 추측)

  4.2.2 개선 사항 :

    여러 nginx를로드, 프런트 엔드 플러스 정맥 주사를 추가 할 수 있습니다

  4.2.3 향상된 결과 :

 

 

5 인터페이스 이름 : 추적 인터페이스

압력은 5.1 현상을 측정 : 1N3T TPS TPS의 1N10T 미만의

  5.1.1 분석 :

    DB를 QPS 90000, CPU80 %의이 때 2,000 9,849 동시 TPS에서 1N3T는 7,813 TPS, DB는 QPS 19000, cpu75 %의 부하 1, 압력 증가 설명에 동시 5000 톰캣 10로 상승 대신 아래의 큰 압력 DB, 지적의 nginx 서버 NIC 흐름이 지침이 너무 많은 압력 상황하에, 885M에 도달, 네트워크가 다운 DB 최종 압력하지만 결과, 전체 패킷 손실이다.

  5.1.2 개선 사항 :

    데이터 전송 인터페이스 부의 양이 크기 때문에, 거기에 기록 될 압력 감지 네트워크 병목 상황있다.

  5.1.3 향상된 결과 :

 

6 인터페이스 이름 : 인터페이스 백필

압력은 6.1 현상 측정 : 500 TPS보다 적은, qps3500 dB의

  6.1.1 분석 :

    DB CPU와 응용 프로그램의 CPU 사용률 데이터의 부족, 낮은 응용 프로그램의 TPS가 병목해야하고, 집중의 필요성에도 불구하고 쿼리를 다루는 느린 DB 없습니다.

  6.1.2 개선 사항 :

    연결 풀 hikar 1. DBCP;

    2. 로그 출력을 감소

    3.sql 최적화, 자바 코드를 실행하는 부분 필터 조건

  6.1.3 향상된 결과 :

  TPS는 1,300 미만 500에서 성장했다.

7 인터페이스 이름 : 쿠폰

압력은 7.1 현상을 측정 : 클러스터 결과를 부당 하나의 응용 프로그램의 결과와 비교

  7.1.1 분석 :

    병목 자원이있는 경우, 당신은 9952에, TPS를 향후 5 개 바람둥이 클러스터를 볼 수 있습니다 볼 수 있지만 데이터베이스 기본 키 또는 인덱스 쿼리의 큰 숫자를 나타내는 50,000-60,000 dB, 37 %의 CPU 사용률,에 QPS, 일반 단일 TPS는 큰 영향 없을 것이기도 약 40,000 스테이션 DB의 QPS는 클러스터 응용 프로그램의 수를 증가시킵니다.

  7.1.2 개선 사항 :

    하위 라이브러리로 간주 될 수 있습니다

  7.1.3 향상된 결과 :

 

8 인터페이스 이름 : 권장

압력은 8.1 현상을 측정 : nginx를 연결 길이 차이를

  8.1.1 분석 :

    18nginx, tps8100는 응용 프로그램 서버 포트 번호를 통해이 시간, 일반적으로, 충전 포트의 높은 동시성에서 Nginx의 짧은 연결이 쉽게 문제가 발생할 2tomcat.

  8.1.2 개선 사항 :

    긴 연결 nginx에합니다

  8.1.3 향상된 결과 :

    TPS 성장 10733, TPS 안정성, 기복을 줄일 수 있지만, CPU가 소진되었습니다. 설명의 CPU는이 시간에 경우에도에 튜닝의 코드 최적화를했다.

9 인터페이스 이름 : 쿼리 2

압력은 9.1 현상을 측정 : TPS의 18N20T를 6842 전에

  9.1.1 분석 :

    Nginx의 18 개 세트 톰캣 20 개 세트, TPS 85 %의인가 CPU 사용률, 병목 CPU가 나타내는 있지만 계산 작업량을 확장하지 않으며이 인터페이스를 체크하는 문제 로깅 수준 빈번한 CPU가있을 수있다 6842 년까지 전투 로그.

  9.1.2 개선 사항 :

    수준 변경 정보에 의해 로그 수준 디버그 수준

  9.1.3 향상된 결과 :

    6842 성장하여 동일한 환경 TPS 23592. 구덩이 아버지의 생산 환경 디버그 로그 수준.

 

전송 : https://www.cnblogs.com/dimmacro/p/4849729.html

추천

출처www.cnblogs.com/itplay/p/11372294.html