JMeter로 성능 테스트

devdo·2022년 10월 21일
0

Project

목록 보기
9/11
post-thumbnail

ward-study-reservation 프로젝트 성능을 JMeter Tool을 사용해서
무한 시간대로 설정해서 성능테스트를 해보았습니다.

그러기위해 JMeter의 설정지수들을 알아야 합니다.

먼저 ThraedGroup 설정지수를 보자면,


JMeter ThraedGroup 설정지수

  • Number of Threads
    스레드 개수이며, 가상 유저 수라고 생각하면 된다.
    HTTP Request Sampler 가 2개일 경우, 스레드를 1로 설정해도, 2번의 request 가 발생한다. 가상 유저수가 HTTP Request Sampler 에 비례한다.

  • Ramp-Up
    스레드 당 생성시간으로, 만약 Number of Threads = 100이고, Ramp-Up = 10 라면, 100명의 유저를 생성할 때 까지 10초가 걸린다는 말이다. 즉, 1초 동안 10명의 유저가 요청을 하는것이고, 만약 Ramp-Up = 0 으로 설정하면, 동시 접속 자 수는 100명이 된다.

  • Loop Count
    하나의 스레드가 수행할 작업 수이며, 만약 Number of Threads = 100이고, Loop Count = 10 이면, 100명의 유저는 동일한 작업을 10번 수행하게 되며, 총 1000번 (총 요청횟수) 이 수행된다.


다음은 JMeter 성능테스트 지표가 무엇인지 설명은 아래와 같습니다.

JMeter 성능지표

Summary Report
- Label : Sampler- Samples : 샘플 실행 수 (Number of Threads X Ramp-up period)
- Average : 평균 걸린 시간 (ms)
- Min : 최소
- Max : 최대
- Std. Dev. : 표준편차
- Error % : 에러율
- Throughput : 초당 처리량 (bps) = JMeter에서는 시간 단위를 보통  TPS (Transaction Per Second)로 표현
- Received KB/sec : 초당 받은 데이터량 
- Sent KB/sec : 초당 보낸 데이터량
- Avg. Bytes : 서버로부터 받은 데이터 평균

조회 성능 측정

조회성능을 측정하기 위해 ThraedGroup 설정을 합니다.

ThraedGroup에 Number of Threads(users)를 300 으로 설정,

사용자 수가 300명이고 해당 Room에 대한 Reservation 조회 성능을 측정해보았습니다.

/room/1/reservation

JMeter에서는 모든 요소들은 Summary Report에서 확인할 수 있습니다.

가장 중요한 것은 TPS(Transation per sec)인데 JMeter에서는 Throughput 지표로 확인할 수 있습니다.

4분을 기준으로 TPS(Thought)가 3973으로 나왔습니다.
그리고 오류율은 0.03%가 확인되었습니다.


캐싱이 된 엔티티 조회 성능 측정

똑같이 사용자 수가 300명이고 해당 캐싱이 적용된 Room에 대한 Reservation 조회 성능을 측정해보았습니다.

4분기준으로 TPS(Thought)가 24389으로 나왔습니다.

캐싱이 적용되면 엄청난 조회성능이 이루어졌음을 확인됩니다.
대략 513% 성능 개선이 이루어진 것입니다.


등록 성능 측정

사용자 수가 가장 많이 사용할 서비스 기능은 study-group 등록일 것으로 예상, 이 api의 성능을 테스트해보았습니다. 테스트해본 결과는 아래와 같습니다.

Summary Report 에서 Saturation Point로 확인된 Throughput706 으로 나옵니다.

무한시간대로 설정했지만, 시간대는 4분의 기간으로 살펴본 결과, 28만여건의 Study-group 엔티티가 등록, 이 시간동안 오류율은 0.78% 를 기록했습니다.


💥주의사항

무한시간대의 설정은 해당 로컬 PC CPU에 무리를 줄 수 있습니다.
CPU 사용량은 제 CPU(amd-ryzen5 5500U)상 100% 사용량을 치고 나왔네요...


등록 2개 성능 측정

이번엔 user 회원가입 insert 작업을 추가해서 2개를 동시에 처리하면서 성능을 확인해봤습니다.

똑같이 시간대는 4분을 기준으로 하였고

가장 중요한 TPS(Throughput)에서 평균치는 Saturation Point로 300~400사이를 오갔고

JMeter의 Summay Report상 370으로 나왔습니다. 2개의 작업을 동시에 하면, 1건 insert한 작업처리량의 절반으로 떨어진다는 걸 확인할 수 있었습니다.



참고

profile
배운 것을 기록합니다.

0개의 댓글