본문 바로가기
프로그래밍/테스트

Jmeter master, slave 를 이용한 http request test

by 낭만프로그래머. 2021. 3. 7.

사내에서 http 부하테스트를 진행할일이 있어서 구축을 해보았다.

(실제로는 로컬에서 테스트했지만..)

 

 

Master -> slave 로 command  를 실행하고 result 를 받는다.

당연한것이겠지만 slave 가 많을수록 target 으로의 http request 를 많이 줄수있다.

master, slave 는 RMI 통신을 하기 때문에 같은 아이피 대역대애 있어야 한다..(예전에는 달라도 되게끔 셋팅을 했었던것같은데..까먹었다)

 

설치 요건

master, slave : 같은 jdk, jmeter 버젼을 사용, 같은 아이피 대역대(RMI 통신가능한..)

 

master 쪽 jmeter 설정

remote_hosts=10.0.0.10,10.0.0.11
server_port=1099 
client.rmi.localport=1099 
server.rmi.localport=1099

slave 쪽 jmter 설정

server_port=1099 
client.rmi.localport=1099 
server.rmi.port=1099 
server.rmi.localport=1099

 

1. slave 쪽 jmeter 실행

2. master jmeter 실행

3. test case 생성후  remote run 

 

http test 의 목적은 서버,서비스가 어느정도의 TPS 의 성능을 가지고 있는지 확인하기 위함이기 때문에

테스트를 할때는 아래의 케이스를 유의하면서 진행하는게 도움이 된다.

 

- target 서버의 resource monitoring

- jmeter test 진행중  tps 의 상승, 하강의 모니터링

- target 서버의 서비스 모니터링

 

tps 의 최고치를 확인하기 위해서 적당한 thread 의 수를 결정하기 위해 점차적으로 thread count 를 증가시킨다.

더이상 tps 가 올라가지 않는 경우는 아래와 같다

- 서비스의 response time 이 넘 올래걸리기 시작한다.(DB lock, DB pool count 의 문제등의 문제)

- 서비스의 cpu 가 100% 에 도달한다(서비스의 서버성능이 부족하다. pod 의 갯수를 증가시키거나 scale-out 을 고려한다)

- network bandwidth 에 도달.

- test 중에 error 가 늘어나기 시작하면 서비스 로그를 확인한다. 서비스의 한계인것인지. db connection 의 한계인지..기타 등등

- 서비스의 서버의 cpu, memory 가 준수한 상황인데 tps 가 올라가지 않는 다면 어디선가 bottleneck 이 있다. 그 bottleneck 을 찾아라!!