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을 활용하여 경매 래플 어플리케이션 시스템의 서버 부하 테스트 진행중인 상황.
테스트 결과
Procedures
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번째 데이터 생성 후 테스트가 중단되었다.
현재 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
이번 테스트는 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
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
VUser가 최대 954명까지 상승했다가 줄어들었다. 이번 테스트는 도중에 중지되지 않고 끝까지 수행되었다. 따라서 약 954명 정도까지 즉, 1000명 가까이 소화하여 테스트를 잘 수행한 것임을 알 수 있다.
게시글 생성 성공률은 100%다. VUser가 낮아질 수록 게시글의 생성 성공률이 높아진다.
리소스 활용도 서버 CPU 12.5%, DB CPU 18.7%다.
이전 테스트의 경우 DB 사용률은 11.2%이었는데, 이번 테스트는 이보다 약 7% 상승한 18.7%를 기록했다. VUser가 낮아질 수록 DB의 사용률이 높아진다.
Discussion
지금까지 했던 테스트의 결과를 종합해보자.
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
RDS
test-pyramid-20230223-008
Application Server
RDS
test-pyramid-20230223-009
Application Server
RDS
test-pyramid-20230223-010
Application Server
RDS
'Log > Experiment' 카테고리의 다른 글
exp013_DB Connection Pool 수 확대로 인한 게시글 생성 성공률 변화 관찰 (0) | 2023.03.04 |
---|---|
exp012_PM2 클러스터모드 적용 여부에 따른 게시글 생성 성공률 변화 관찰 (0) | 2023.03.03 |
exp010_게시글 생성 10,000개 생성 요청 시 10,000개가 모두 생성될까 (0) | 2023.03.02 |
exp009_Redis Cloud 적용 여부에 따른 성능 변화 관찰 (0) | 2023.03.02 |
exp008_PM2 클러스터 모듈 적용에 따른 로직 성능 변화 관찰 (0) | 2023.03.02 |
댓글