Title
exp010_게시글 생성 10,000개 생성 요청 시 10,000개가 모두 생성될까
Research Question
성능 테스트 도구 nGrinder로 경매 데이터(bid entity) 생성 요청을 지속적으로 하면 어떻게될까?
Summary
- 10,000개 생성 요청 결과, 10,000개 모두 실패 없이 생성 완료했다
- 이때 VUser 1000명으로 10번씩 생성하는 테스트와 VUser 100명이 100번씩 생성하는 테스트 모두 진행했고, 오류가 발생하지 않았다
- 테스트 초기에 모든 요청이 에러로 기록되는 문제가 발생했는데 nGrinder 스크립트 관련 이슈로 추정된다. 테스트 옵션에 Ignore errors를 설정하여 해결 했다.
Background Information
- current Experiment : test-pyramid-20230302-001
Procedures
nGrinder POST 스크립트 작성
Data Recording & Analysis
test-pyramid-20230302-001
- Agent : 1
- Vuser : 1
- Duration : 1mins
- Ramp-up : True
테스트 결과 nGrinder 리포트 상에는 모두 에러로 잡혔다.
그러나 PM2 모니터에서는 로그가 정상적으로 찍혔다.
DB를 확인해보니 데이터가 총 1347개까지 생성되었다. 여기서 궁금점은 테스트가 모두 완료된 것인가 아니면 도중에 끊긴 것이냐다.
Application Server
이는 어플리케이션 서버의 CPU 사용률인데 3% 이하다. 왜 1000회 이상 생성 요청동안 3%밖에 사용하지 않았을까?
RDS
DB도 뭔가 열심히 일하는 느낌이 아니다.
Duration을 1분으로 잡고 시작했었는데, 시간이 아니라 count 단위로 테스트를 진행해야겠다는 생각이 들었다. 왜냐하면 count로 해야 정확하게 POST 요청 횟수를 파악할 수 있고 성공률도 계산할 수 있기 때문이다. 그뿐만 아니라 1분 단위로 DB I/O 요청을 하는 것은 첫 테스트치고 강도가 높을 수도 있겠다는 생각이 들었다.
test-pyramid-20230223-002
- Vuser : 20
- Run count : 10
- Total request : 200
- Ramp-up : True
- 테스트 시작 전 DB 데이터 개수 : 1351
- 테스트 완료 후 DB 데이터 개수 : 1584
- 테스트 중 생성 데이터 개수 : 233
테스트 결과, 데이터는 정상적으로 잘 생성 되었다. 테스트 총 200회 진행했는데, 데이터가 총 233개 생성되었다.
문제는 nGrinder는 모든 테스트 결과를 모두 에러로 정의하고 있었다. nGrinder 스크립트 쪽 문제가 아닐까 생각했다.
Application Server
CPU 8.98%. 이전보다는 더 상승했다.
RDS
RDS CPU 사용률은 큰 변화가 없다.
이번엔 좀 더 늘려보자.
test-pyramid-20230223-003
- Vuser : 200
- Run count : 10
- Total request : 2000
- Ramp-up : True
- 테스트 시작 전 DB 데이터 개수 : 1584
- 테스트 완료 후 DB 데이터 개수 : 2331
- 테스트 중 생성 데이터 개수 : 747
이번엔 총 2000개 테스트를 시도했는데, 747개 데이터 생성 후 테스트가 종료되었다.
application server
2.94%. 여전히 미미하다.
RDS
test-pyramid-20230223-004
- Vuser : 198
- Run count : 50
- Total request : 9900
- Ramp-up : True
- 테스트 시작 전 DB 데이터 개수 : 2349
- 테스트 완료 후 DB 데이터 개수 : 12231
- 테스트 중 생성 데이터 개수 : 9882
Error을 무시하는 옵션을 켜주고 진행해보겠다.
Application Server
RDS
Ignore Error 옵션을 켜주니 정상적으로 비딩 생성 요청이 진행되었다.
진행 테스트 수 : 9900
생성 데이터 수 : 9882
게시글 생성률이 99.8%이고 게시글 생성 실패율이 약 0.2%다. 총 누락 생성 게시글은 18건이다. 조금 더 테스트를 해보자.
test-pyramid-20230223-005
이번에는 같은 수의 생성 요청인데 VUSer 수를 올려보겠다.
- Vuser : 1000
- Run count : 10
- Total request : 10000
- Ramp-up : True
- 테스트 시작 전 DB 데이터 개수 : 21703
- 테스트 완료 후 DB 데이터 개수 : 31703
- 테스트 중 생성 데이터 개수 : 10000
게시글 생성률이 100%에 도달했다.
application server
RDS
VUser을 1000명으로 설정하고 각 유저가 10개씩 데이터를 생성하는 방식으로 접근했더니, 게시글 생성 실패가 없었다.
이제 10000개 데이터를 기준으로 테스트를 다각화해보면 흥미로운 인사이트를 얻을 것 같다는 생각이 들었다. 한번 더 가보자.
test-pyramid-20230223-006
이번에도 10000개의 데이터를 만드는데, VUser을 100명이 각 100개의 데이터를 만드는 시나리오를 설정해보자.
- Vuser : 100
- Run count : 100
- Total request : 10000
- Ramp-up : True
- 테스트 시작 전 DB 데이터 개수 : 0 (after truncated)
- 테스트 완료 후 DB 데이터 개수 : 10000
- 테스트 중 생성 데이터 개수 : 10000
100명이 100개의 비딩 게시글을 생성했고, 모두 성공했다.
Application Server
CPU 9.33 % 사용했다.
RDS
CPU는 10.6%
Discussion
Conclusion
- 10,000개 생성 요청 결과, 10,000개 모두 실패 없이 생성 완료했다
- 이때 VUser 1000명으로 10번씩 생성하는 테스트와 VUser 100명이 100번씩 생성하는 테스트 모두 진행했고, 오류가 발생하지 않았다
- 테스트 초기에 모든 요청이 에러로 기록되는 문제가 발생했는데 nGrinder 스크립트 관련 이슈로 추정된다. 테스트 옵션에 Ignore errors를 설정하여 해결 했다.
Reference
Appendix
'Log > Experiment' 카테고리의 다른 글
exp012_PM2 클러스터모드 적용 여부에 따른 게시글 생성 성공률 변화 관찰 (0) | 2023.03.03 |
---|---|
exp011_게시글 생성 30,000개 생성 요청 시 30,000개가 모두 생성될까 (2) | 2023.03.03 |
exp009_Redis Cloud 적용 여부에 따른 성능 변화 관찰 (0) | 2023.03.02 |
exp008_PM2 클러스터 모듈 적용에 따른 로직 성능 변화 관찰 (0) | 2023.03.02 |
exp007_스케일업 전후 어플리케이션 성능 비교 실험 (0) | 2023.03.01 |
댓글