본문 바로가기
Log/Experiment

exp011_게시글 생성 30,000개 생성 요청 시 30,000개가 모두 생성될까

by RIEM 2023. 3. 3.

Title

exp011_게시글 생성 30,000개 생성 요청 시 30,000개가 모두 생성될까

Research Question

성능 테스트 도구 nGrinder로 경매 데이터(bid entity) 생성 요청을 30,000번 하면 30,000개 모두 생성될까?

Summary

VUser 수가 감소할 수록 게시글 생성 성공률이 상승했다

  • 비딩 데이터 생성 요청 수 30,000개 기준으로 실험했을 때, VUser 수 6000명일 경우 성공율이 20.9%였는데 반해, VUser가 1000명으로 감소했을 때는 100% 생성 성공률을 기록했다

Background Information

Situation

  • 부하 테스트 툴 nGrinder을 활용하여 경매 래플 어플리케이션 시스템의 서버 부하 테스트 진행중인 상황.

테스트 결과
Screen Shot 2023-03-03 at 12 52 14 AM

Procedures

Screen Shot 2023-03-03 at 12 50 30 AM

Data Recording & Analysis

test-pyramid-20230223-007

  • Vuser : 6000
  • Run count : 5
  • Total request : 30000
  • Ramp-up : True
  • 테스트 시작 전 DB 데이터 개수 : 10000
  • 테스트 완료 후 DB 데이터 개수 : 16265
  • 테스트 중 생성 데이터 개수 : 6265

30,000개 생성 요청했는데 생성된 데이터는 6,265로 데이터 생성 성공률은 약 20.9%에 불과했다. 이전 실험에서 10,000개 생성 시에는 생성 성공률 100%를 기록했었는데, 이번 경우에는 6265번째 데이터 생성 후 테스트가 중단되었다.

Screen Shot 2023-03-02 at 10 49 07 PM

현재 VUser는 Ramp-up으로 점진적으로 부하를 주고있는 상황인데, 호가인해보니 VUser 1,238명에서 테스트가 중단되었다.

리소스 사용률은 아래와 같았다.

  • Application Server : 6.48%
  • DB : 9.17%

리소스 사용률이 10% 미만으로 효율적으로 사용되지 못하고 있는 상황이다. 그럼에도 불구하고 6,265번째 데이터까지 밖에 데이터 생성을 완수하지 못했다. 어디가 문제인 것일까.

잘 모르겠으면 더 시도해보면 된다. 대신 같은 30000개 데이터 생성 요청으로 하되 VUser 수를 반으로 줄이고 인당 생성 횟수를 늘려보겠다.

test-pyramid-20230223-008

  • Vuser : 3000
  • Run count : 10
  • Total request : 30000
  • Ramp-up : True
  • 테스트 시작 전 DB 데이터 개수 : 16265
  • 테스트 완료 후 DB 데이터 개수 : 28859
  • 테스트 중 생성 데이터 개수 : 12594

Screen Shot 2023-03-02 at 11 06 33 PM

이번 테스트는 VUser 1237명에서 테스트가 중지되었다. 이전 테스트는 1238명에서 멈춘 점을 생각해봤을 때, 이 지점이 한계점이 아닐까 추측된다.

리소스 사용률은 서버 CPU 9.5%, DB CPU 10.2%로 이전 테스트 대비 1-2% 밖에 차이나지 않았다.

게시글 생성 성공률은 42%로 이전 테스트 대비 22% 상승했다. 이전 테스트와 종합해서 보자면, 이전 테스트의 경우 6000명의 VUser가 5번씩 총 30,000회 비딩 데이터 생성 요청 시 성공률은 20.9%에 불과했다. 하지만 이번 테스트는 3000명의 VUser가 총 10번씩 총 30,000회 비딩 데이터 생성을 요청을 했는데 성공률은 약 22% 상승한 42%로 기록되었다. 두 테스트만 비교했을 때, VUser가 높은 경우 비딩 생성 성공률이 감소했다는 점이다.

그렇다면 이 단편적인 차이를 토대로 우리는 'VUser가 낮을 수록 게시글 성공률이 높아지고, VUser이 높을 수록 성공률은 감소한다'라는 가설 하나를 세울 수 있다. 이를 증명하기 위해 좀 더 데이터를 수집해보겠다.

데이터 생성 30000회를 기준으로하고 VUser수를 베리에이션하여 테스트해보자.

test-pyramid-20230223-009

  • Vuser : 3000
  • Run count : 10
  • Total request : 30000
  • Ramp-up : True
  • 테스트 시작 전 DB 데이터 개수 : 28859
  • 테스트 완료 후 DB 데이터 개수 : 47540
  • 테스트 중 생성 데이터 개수 : 18681

Screen Shot 2023-03-02 at 11 38 06 PM

VUser 1230명에서 테스트가 중지되었다.

테스트가 중지된 시점의 VUser 수

  • test-pyramid-20230223-007 : 1238명
  • test-pyramid-20230223-008 : 1237명
  • test-pyramid-20230223-009(현재) : 1230명

1230명대 이 지점이 유저 포화점인 것으로 점점 기울어지고 있다.

게시글 생성 성공률은 이전 테스트 대비 약 20% 증가한 62.3%이다. VUser 수를 줄일 때마다 성공률은 증가한다.

리소스 사용률은 서버 CPU 10.7%, DB CPU 11.2%이다. VUser 수를 줄일 때마다 게시글 생성 성공률이 상승하고 이에 따라 리소스 사용률도 함께 상승한다. 이는 리소스가 조금씩 효율적으로 사용되고 있음을 알 수 있다.

이제 VUser 수를 다시 올려서 테스트를 해보자.

test-pyramid-20230223-010

  • Vuser : 1000
  • Run count : 30
  • Total request : 30000
  • Ramp-up : True
  • 테스트 시작 전 DB 데이터 개수 : 47540
  • 테스트 완료 후 DB 데이터 개수 : 77540
  • 테스트 중 생성 데이터 개수 : 30000

Screen Shot 2023-03-03 at 12 29 21 AM

VUser가 최대 954명까지 상승했다가 줄어들었다. 이번 테스트는 도중에 중지되지 않고 끝까지 수행되었다. 따라서 약 954명 정도까지 즉, 1000명 가까이 소화하여 테스트를 잘 수행한 것임을 알 수 있다.

게시글 생성 성공률은 100%다. VUser가 낮아질 수록 게시글의 생성 성공률이 높아진다.

리소스 활용도 서버 CPU 12.5%, DB CPU 18.7%다.
이전 테스트의 경우 DB 사용률은 11.2%이었는데, 이번 테스트는 이보다 약 7% 상승한 18.7%를 기록했다. VUser가 낮아질 수록 DB의 사용률이 높아진다.

Discussion

Screen Shot 2023-03-03 at 12 42 47 AM

지금까지 했던 테스트의 결과를 종합해보자.

test 요청 수 생성 데이터 수 성공률 VUser Run Count
20230223-007 30000 6265 20.9% 6000 5
20230223-008 30000 12594 42% 3000 10
20230223-009 30000 18681 62.3% 2000 15
20230223-010 30000 30000 100% 1000 30

Conclusion

  • VUser 수가 감소할 수록 게시글 생성 성공률이 상승했다
  • 비딩 데이터 생성 요청 수 30,000개 기준으로 실험했을 때, VUser 수 6000명일 경우 성공율이 20.9%였는데 반해, VUser가 1000명으로 감소했을 때는 100% 생성 성공률을 기록했다

Reference

Appendix

test-pyramid-20230223-007

Application Server

Screen Shot 2023-03-02 at 10 51 27 PM

RDS

Screen Shot 2023-03-02 at 10 52 17 PM

test-pyramid-20230223-008

Application Server

Screen Shot 2023-03-02 at 11 09 24 PM

RDS

Screen Shot 2023-03-02 at 11 10 07 PM

test-pyramid-20230223-009

Application Server

Screen Shot 2023-03-02 at 11 42 38 PM

RDS

Screen Shot 2023-03-02 at 11 43 12 PM

test-pyramid-20230223-010

Application Server

Screen Shot 2023-03-03 at 12 31 32 AM

RDS

Screen Shot 2023-03-03 at 12 33 19 AM

댓글