Dev/Java

[java] jmeter 성능 테스트

창문닦이 2020. 5. 20. 13:37

서버 부하 테스트를 해야해서 jmeter를 처음 사용해 보았다. 내가 테스트한 것은 멀티스레드로 랜덤한 파라미터값으로 요청을 왕창 보내는 간단한 기능이었다. 이 내용을 또 까먹지 않기 위해 간략하게 정리한다.

 

에이징 테스트란?

컴퓨터 장치를 검사하는 방법의 한 가지. 컴퓨터 시스템과 컴퓨터를 구성하는 각각의 시스템이 한계 상황 속에서 견뎌 낼 수 있는가를 확인하기 위하여 사용되는 검사 방법. 예를 들어 하드 디스크의 내구성을 검사하기 위하여 하드 디스크에 대한 입출력 작업만을 7일 이상 쉬지 않고 계속해서 수행하는 방법이 이에 해당된다.

출처: <http://blog.naver.com/PostView.nhn?blogId=dydtjs75&logNo=80011310841>

 

Jmx 파일

Jmx 파일은 Jmeter 관련 설정 파일이다. JMX (Java Management Extensions)는 응용 프로그램(소프트웨어) / 객체 / 장치 (프린터 등) 및  서비스 지향 네트워크 등을 감시 관리를 위한 도구를 제공하는 자바 API이다.


Jmeter 기능(다양한 애플리케이션 / 서버 / 프로토콜 유형을로드하고 성능을 테스트)

  • 웹-HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET 등)
  • SOAP / REST 웹 서비스
  • FTP
  • JDBC를 통한 데이터베이스
  • LDAP
  • JMS를 통한 메시지 지향 미들웨어 (MOM)
  • 메일-SMTP (S), POP3 (S) 및 IMAP (S)
  • 기본 명령 또는 쉘 스크립트
  • TCP
  • 자바 객체

설치는 간단하다. 여기를 통해 다운로드받고 JMeter를 설치할 디렉토리에 zip / tar 파일을 압축 해제하면 된다. JRE / JDK가 올바르게 설치되었고 JAVA_HOME 환경 변수가 설정되어 있으면 끝이다.

 

윈도우 환경에서는 bin 폴더 하위의 jmeter.bat 을 실행하면 구동된다. 

리눅스 환경에서는 쉘 스크립트를 만들어 설정값을 자동으로 오는 것이 좋다 

루프 컨트롤러

무한 반복되도록 설정된 루프 컨트롤러

카운터 참조이름을 idx로 설정했으므로 Request 시 ${idx}로 사용하면 된다.

1~9까지의 인덱스를 순차적으로 사용하는 카운터 

랜덤 변수

포맷은 숫자 8자리 수로 선언하였고 10000000 ~ 99999999 수 중에 랜덤하게 뱉는 변수 설정이다.

카운터와 마찬가지로 참조명을 Request에서 사용하면 된다.  여기선 ${rd}로 설정했다.

기본적인 HTTP 요청 설정을 HTTP Request Default 로 묶어서 설정할 수 도 있고 loop 컨트롤러 하위에 개별적으로 설정하는 것도 가능하다.  protocol, ip주소, port 번호를 설정하고 uri를 path에 입력한다. post method로 실행되므로 파라미터는 아래와 같이 랜덤하게 생성되도록 작성했다. 

 loop 컨트롤러가 반복되면서 파라미터가 생성되어 요청된다. 그렇다. 핸드폰 번호를 랜덤하게 만들어서 요청하고 싶어서 이 하루종일 찾다가 정리한 것이다. 다른 블로그를 한참 뒤졌는데 만들었는데 그냥 공식 문서를 보는게 최고란 걸 또다시 깨달았다. ㅎ,,ㅎ

> userId : Jmeter+(랜덤하게생성된8자리수)

> phoneNumber : 01+{순차번호}+(랜덤하게생성된8자리수)

 

 

참조한 사이트들 

자세한 내용은 https://jmeter.apache.org/usermanual/index.html 를 확인하자 ! 

출처: https://klero.tistory.com/entry/리눅스에-설치한-아파치-톰캣Apache-Tomcat-에-jmx를-활성화-하며-JConsole을-통한-모니터링 [Klero]

http://blog.naver.com/PostView.nhn?blogId=simpolor&logNo=221327554177&parentCategoryNo=&categoryNo=204&viewDate=&isShowPopularPosts=true&from=search

https://victorydntmd.tistory.com/267

https://huistorage.tistory.com/89?category=723808

https://huistorage.tistory.com/84

https://www.cikorea.net/bbs/view/lecture?idx=7082

'Dev > Java' 카테고리의 다른 글

[effective-java] 모든 객체의 공통 메소드  (0) 2020.11.29
[java] FilenameFilter, FileFilter  (0) 2020.06.10
[effective-java] 동시성  (0) 2020.01.15
[effective-java] 일반적인 프로그래밍 원칙  (0) 2020.01.14
[java] CSV 파싱하기  (0) 2019.12.13