기술나눔

jmeter 배포됨 (4)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. GUI

jmeter의 GUI는 주로 스크립트를 디버깅하는 데 사용됩니다.

1. 먼저 GUI를 사용하여 스크립트를 만듭니다.

먼저 스크립트를 작성하세요
데모: 혼합 장면을 스크립팅하는 방법은 무엇입니까?
211의 비즈니스 비율을 사용하십시오.

①데이터베이스 서비스를 시작합니다

데이터베이스 서비스: mysql, redis 포함
mysql 포트 기본값 3306

netstat -lntp | grep 3306
  • 1

수신 대기 상태에서는 6379가 redis의 기본 포트입니다.

netstat -lntp | grep 6379
  • 1

프로젝트 서비스 포트 18089

netstat -lntp | grep 18089
  • 1

②액세스 인터페이스 문서 스웨거

211은 두 가지 스트레스 테스트 서비스로 전환 가능

하나는 등록하는 것이고, 다른 하나는 등록하고 로그인하여 제품을 추가하는 것입니다.
둘 다 50%

③스레드 그룹 추가

jmeter - 스레드 그룹 추가-추가-스레드-사용자-스레드 그룹 추가

두 가지 스트레스 테스트 서비스 전환

④처리량 컨트롤러 추가

jmeter - 로직 추가 컨트롤러 - 처리량 컨트롤러

두 가지 스트레스 테스트 서비스를 전환하세요.
1차 스트레스 테스트 사업에는 회원가입, 로그인, 상품추가 등이 포함됩니다.
2차 스트레스 테스트 사업 등록입니다

여기에 이미지 설명을 삽입하세요.

각각 50%
여기에 이미지 설명을 삽입하세요.

⑤샘플러 http 요청 추가

jmeter-추가-샘플러-http-요청
두 가지 스트레스 테스트 서비스 전환
여기에 이미지 설명을 삽입하세요.

1차 스트레스 테스트 사업에는 회원가입, 로그인, 상품추가 등이 포함됩니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

두 번째 사업은 등록이다.

등록 Swagger에 따라 작성하고 매개변수를 입력하십시오.
여기에 이미지 설명을 삽입하세요.
일반적으로 ID를 삽입할 때 ID를 입력할 필요는 없습니다.
Addtime도 입력할 필요가 없습니다.
매개변수 데이터를 복사하여 jmeter에 붙여넣습니다.
여기에 이미지 설명을 삽입하세요.

URL 기반 경로
여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

⑥http 헤더 관리자를 추가하고,

그들은 모두 json을 전달합니다.
여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

⑦http 요청 기본값 추가

인터페이스 문서에 따라 IP와 포트를 입력합니다.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

⑧리스너 추가 및 결과 트리 보기

여기에 이미지 설명을 삽입하세요.

⑩ Assertion 추가

주장을 추가하는 것이 가장 좋습니다

여기에 이미지 설명을 삽입하세요.여기에 이미지 설명을 삽입하세요.

2. 논귀

-n GUI가 아닌 모드에서 jmeter를 실행합니다.
-t는 테스트 파일의 위치를 ​​실행합니다. jmeter를 실행할 스크립트를 지정합니다. 전체 경로를 작성해야 합니다.
-l은 생성된 결과 파일(jtl 파일)을 지정합니다.
-e 테스트가 완료된 후 테스트 보고서를 생성합니다.
-o는 테스트 보고서 HTML의 저장 위치를 ​​지정합니다.
-r 원격 시작

1. 단일 기계 프레스

①프레스 응모

Linux Press에 jdk 및 jmeter 설치
usr/local에 설치
디버깅 스크립트에 관련된 플러그인도 사용할 수 있으므로 창의 jmeter를 Linux 프레스에 직접 업로드하세요.
여기에 이미지 설명을 삽입하세요.

②언론사에 대본 업로드

참고: 스크립트에 csv 매개변수 파일이 포함된 경우 csv' 매개변수 파일을 Linux에서 jmeter의 bin 디렉터리에 업로드해야 합니다.
업로드하기 전에 집계 보고서와 리스너를 비활성화해야 합니다.

스레드 5개, 30초마다 하나씩 추가, 즉 150개

지속 시간은 Rang up time인 150보다 커야 합니다. 50초 더 실행하려면 200으로 설정하세요.
여기에 이미지 설명을 삽입하세요.

jmeter를 성공적으로 업로드한 후 jmeter 버전과 사용 가능 여부를 확인합니다.

여기에 이미지 설명을 삽입하세요.

③초기화

두 곳이 있어요
먼저, 테스트 스크립트를 저장할 경로에는 html 보고서를 저장할 디렉터리를 만들어야 합니다.

여기에 이미지 설명을 삽입하세요.
스크립트를 실행하기 전에 res 디렉터리는 비어 있어야 합니다.
둘째, 기존 데이터를 고려하지 않고 데이터베이스 테이블의 데이터를 정리합니다.
여기에 이미지 설명을 삽입하세요.

④스크립트 실행

여기에 이미지 설명을 삽입하세요.

⑤결과 보기

결과
13초 안에 548개의 요청을 완료했습니다.

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

집계 보고서 열기
ko 실패한 요청 수

여기에 이미지 설명을 삽입하세요.
응답 시간응답 시간
여기에 이미지 설명을 삽입하세요.

티피에스

여기에 이미지 설명을 삽입하세요.

jtl 파일을 보는 방법은 무엇입니까?
결과 트리 보기, 집계 보고서, tps, 응답 시간 등 모든 리스너에서 jtl을 열 수 있습니다.
집계 보고서에서 열린 경우 찾아보기를 클릭하세요.
여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.
tps, 응답시간 등
먼저 tps를 살펴보겠습니다.
TPS 추가
탐색하려면 클릭하세요.

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

응답 시간여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

2. 분산

때로는 한 번의 프레스로 목표를 달성할 수 없으므로 분산된 프레스가 필요합니다.
결국 단일 기계 리소스는 제한되어 있으며 대규모 동시성을 지원하기 어렵습니다. 단일 기계 프레스에도 병목 현상이 있습니다.

2.1 유통원리

공식 웹 사이트:https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

서버 시스템은 제어 시스템 역할을 합니다.
나머지 기계는 로드 기계로 사용됩니다.
대상이 요청한 서비스
컨트롤러는 신호를 전송하여 부하 기계의 시작 및 정지를 원격으로 제어하는 ​​동시에 부하 기계 데이터 및 요약을 수집합니다.
로드 머신은 주로 스레드를 시작하여 서버에 액세스하고 스트레스 테스트 중인 서버를 대상으로 합니다.
일반적으로 작업자는 로드 시스템을 원격으로 제어하기 위해 jmeter-server 제어 시스템을 시작합니다. 로드 시스템은 스레드를 시작하고 대상에게 데이터를 가져오도록 요청한 다음 이를 제어 시스템으로 다시 보냅니다.

배포 시 스크립트는 어디에 배치되나요?
하나의 컨트롤러 여러 작업자
non-gui를 실행하면 스크립트가 서버로 전송되는데 이제 배포가 되었으니 어디로 스크립트를 전송해야 할까요?
스크립트는 실행 중에 각 로드 머신, 즉 각 워커로 전송됩니다. 로드가 스크립트를 얻은 후 실행 후 데이터가 전달됩니다. 요약을 위해 제어 기계에 보냅니다.

2.2 분산압력시험 시 주의사항

(https://img-blog.csdnimg.cn/e3de7b8b65a1447db3bc3618876f62d3.png)
방화벽을 닫아야 합니다. 방화벽이 닫혀 있지 않으면 포트를 열어야 합니다.
모든 클라이언트는 동일한 서브넷에 있어야 합니다.
jmeter가 서버에 액세스할 수 있는지 확인하세요.
jmeter와 Java 버전이 동일한지 확인하세요.
SSL 비활성화

2.3 환경 준비

3개의 가상 머신이 필요합니다.
181을 컨트롤러(제어 기계)로 사용
182,183을 작업자(로드 머신)로 사용
동시에 이 세 개의 가상 머신에는 jdk와 jmeter를 설치해야 합니다.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
JDK 버전 보기
여기에 이미지 설명을 삽입하세요.
세 개의 가상 머신에 jmeter 설치
로컬 머신의 jmeter는 가상 머신의 usr/local 디렉터리로 전송됩니다.
업로드 후 jmeter 버전을 확인하세요.
여기에 이미지 설명을 삽입하세요.

2.4 분산 구성

①근로자

182、182
먼저 구성 파일 jmeter.properties를 백업하십시오.
여기에 이미지 설명을 삽입하세요.

server_port는 수정되거나 수정되지 않을 수 있습니다. 기본값은 1099입니다.
여기에 이미지 설명을 삽입하세요.

SSL 비활성화
server.rmi.ssl.disable=false, false를 true로 변경
여기에 이미지 설명을 삽입하세요.

젬터 시작
./jmeter-server
여기에 이미지 설명을 삽입하세요.
포트 182가 수신 대기 상태인지 확인하세요.

여기에 이미지 설명을 삽입하세요.

확인하다
제어 시스템을 로드 시스템에 텔넷하여 포트에 액세스할 수 있는지 확인하십시오.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

②컨트롤러

제어 시스템을 구성하기 전에 창에서 jmeter를 디버그하세요.
win: 디버깅용
먼저 구성 파일 jmeter.properties를 백업하십시오.
여기에 이미지 설명을 삽입하세요.
기본적으로 이 시스템은 로드 시스템으로 사용됩니다.
현재 로드 머신은 원격 로드 머신입니다. Remote_hosts=127.0.0.1을 Remote_hosts=192.168.117.182:1099로 변경하세요.
여기에는 원격 로드 머신의 IP와 포트를 기재해야 합니다. 여러 개일 경우 쉼표로 구분하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
SSL 비활성화
server.rmi.ssl.disable=false를 server.rmi.ssl.disable=true로 변경합니다.
여기에 이미지 설명을 삽입하세요.

먼저 이 머신을 통해 디버깅하세요.
jmeter를 다시 시작하고 구성 파일을 다시 읽으십시오.
여기에 이미지 설명을 삽입하세요.
창에서 디버깅한 후 Linux로 이동하여 구성합니다.

181에서 구성
먼저 구성 파일 jmeter.properties를 백업하십시오.

여기에 이미지 설명을 삽입하세요.

현재 로드 머신은 원격 로드 머신입니다.remote_hosts=127.0.0.1로 변경remote_hosts=192.168.117.182:1099
여기에는 원격 로드 머신의 IP와 포트를 기재해야 합니다. 여러 개일 경우 쉼표로 구분하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

서버.rmi.ssl.disable=false
할 것이다server.rmi.ssl.disable=false로 변경server.rmi.ssl.disable=true
여기에 이미지 설명을 삽입하세요.
스크립트가 제어 시스템으로 전송되면 해당 스크립트는 각 부하 시스템에 자동으로 배포됩니다.
별도의 테스트 단일 시나리오 로그인
여기에 이미지 설명을 삽입하세요.
스크립트 업로드 후 스크립트 실행
원격 로드를 통해 실행

/usr/local/apache-jmeter-5.1.1/bin/jmeter -n -r -t test.jmx
  • 1

여기에 이미지 설명을 삽입하세요.

각 작업부하 기계(프레스)에는 5개의 스레드가 있고, 전체 제어 기계에는 10개의 스레드가 있습니다.
여기에 이미지 설명을 삽입하세요.

환경 준비
두 개의 가상 머신. 하나의 마스터와 두 개의 슬레이브가 있습니다. Windows 머신은 하나의 마스터 역할을 하고 슬레이브는 가상 머신을 사용합니다.
출처: https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

발생하는 문제:
java.rmi.RemoteException: 시작할 수 없습니다. localhost.localdomain은 루프백 주소입니다.

원격 객체 생성: UnicastServerRef2 [liveRef: [endpoint:127.0.0.1:43474,objID:[-5a8dd143:17e2852fe88:-7fff, 3673082414768940798]]]
서버를 시작하지 못했습니다: java.rmi.RemoteException: 시작할 수 없습니다. localhost.localdomain은 루프백 주소입니다.
오류가 발생했습니다: 시작할 수 없습니다. localhost.localdomain은 루프백 주소입니다.
여기에 이미지 설명을 삽입하세요.
예외 정보: 서버 시작 예외: Java 원격 메소드 호출로 인해 예외가 발생했습니다. 서비스를 시작할 수 없습니다. localhost.localdomain은 로컬 루프백 주소입니다.

호스트 이름 명령을 통해 얻은 호스트 이름은 localhost입니다.
cat /etc/hosts 명령을 통해 호스트 구성을 확인합니다. localhost localhost.localdomain localhost4...는 127.0.0.1을 가리킵니다.
여기에 이미지 설명을 삽입하세요.
해결책:
원격 서버 호스트(rmi.server.hostname)의 IP 주소를 지정합니다.
터미널 명령을 지정하여 시작
./jmeter-server -Djava.rmi.server.호스트 이름=192.168.2.2
여기에 이미지 설명을 삽입하세요.여기에 이미지 설명을 삽입하세요.