본문 바로가기

카테고리 없음

Apache Jmeter를 활용한 부하테스트

오늘은 부하테스트에 관한 짧은 글 입니다. 보통 글을 쓸 때 특히 설명문 같은 글을 쓸 때는 그 주제에 대해 많이 알아야 쓸 수 있을 것입니다. 그런데 오늘 같은 주제는 저도 잘 모르는 분야~라 오히려 혹시 이 글을 봐주시는 고수분께 제가 물어보는 형식의 글이 될지도 모르겠습니다.

부하테스트란 서비스 작동될 서버에 일정량의 트래픽을 일부러 발생시켜 서버가 다운되지 않고 정상 작동되는지 여부를 테스트 하는 것이라고 정의해 보았습니다.
 
저는 최근에 서버에서 작동되는 몇 가지 프레임워크를 동료들과 함께 개발한 다음 부하테스트를 해야 했던 일이 있었습니다. 그런데 저는 부하테스트에 관하여 항상 가지던 의문이 있었습니다.
부하를 어떻게 발생시킬 것인가~ 그리고 부하 테스트가 성공적으로 완수되었다는 판단 기준은 무엇인가~

인데요. 예를 들어 서버사양 ‘’ Ghz의 CPU, ‘’ 기가 메모리의 서버에 우리가 만든 프레임워크들을 탑재한다음, 클라이언트에서 서버로 동시 세션을 ‘’백,천,만개 발생시켜 던졌을 때 ‘’초안에 응답이 와야 된다~ 라는 시나리오가 있을텐대요. 여기서 수치대신 대입한 단어인 ‘’에 도대체 얼마만큼의 수치가 들어가야 정확한 부하테스트를 할 수 있는지 알 수가 없는 것입니다.

주변에 물어보니 리눅스 top 명령어를 유심히 보다가 CPU와 메모리가 Full차면 그때가 서버의 한계니 그때의 세션 현황등의 각종 수치를 파악해 보라~라는 조언을 듣기도 하였습니다만 좀더 정확한 측정 방법이 있을 것 같다는 생각이 들었습니다.

Apache Jmeter를 알기 전까지 저는 임의로 자바 네트워크 클라이언트 프로그램을 만들어 스레드를 100개, 1000개 발생한 다음 서버로 던져서 서버가 잘 받아내고 리턴해는지를 테스트 하곤 했습니다.

그러다가 Jmeter를 알고 조금은 정확한 부하 테스트를 할 수 있었습니다. 1. 일단 Jmeter에는 몇 명의 사용자가 부하테스트를 줄 것인지, 사용자간 접속시간의 차이를 얼마나 줄 것인지, 사용자마다 몇번 접속을 시도할 것인지의 세션 접속 시나리오를 쉽게 설정할 수 있습니다.

그리고 2. 그 결과를 시각적으로 수치적으로 이해하기 쉽게 확인할수도 있습니다. 또한 3. 예를들어 로그인을 하고 특정 페이지 조회까지 하는 페이지 이동 시나리오를 입력하여 좀더 사실적으로 테스트를 할 수도 있습니다.

이 정도의 기본 기능만 알아도 기본적인 부하테스트는 쉽게 시도할 수 있을 것입니다. 아래 소개하는 칼럼에서는 위의 1, 2, 3의 부하테스트의 기본 조건을 충분히 실습해 볼 수 있는 설명을 하고 있습니다.

한가지 보너스는 최근에 Jmeter를 사람을 위한 자동화 도구 Ant와 연동하여 프로젝트 빌드시에 자동으로 부하테스트 할 수 있는 방법도 설명하고 있습니다. 부하테스트까지 자동화 할 수 있다면 그야말로 탱크~ 같은 튼튼한 프로젝트 개발이 이루어질 것 같네요. 여러분도 Jmeter 활용해 보시길 바랍니다.


> IBM developerWorks


Apache JMeter를 이용한 WebSphere 퍼포먼스 테스트


사람을 위한 자동화: 전혀 귀찮지 않은 로드 테스팅
(번역하신 백기선님 수고하셨습니다. ^ ^)


> 기타 유익한 칼럼


Jmeter를 사용한 Stress Test(1)

Jmeter를 사용한 Stress Test(2)

Jmeter를 사용한 Stress Test(3)


> 산골 블로그 관련글


사람(개발자)을 위한 자동화 기술에 눈을 뜨다.
자동 빌드 툴 개미의 체질 개선(Ant 리팩토링)
개발자와 프로그래밍의 가치을 높여주는 JUnit
에러 잡는 마음가짐
사람을 위한 자동화, 코드 자동화 관련 이클립스 플러그인 (IBM developerWorks)
진화하는 아파치 미나(Apache MINA) 위키 강좌
Apache MINA(미나)로 프로토콜 로직 만든 후기
자바 NIO 네트워크 프로그래밍 공부
TCP/IP 책 3종 세트를 읽고 (네트워크 프로그래밍)