issues
search
O0oO0Oo
/
netty-reservation-service
트랜잭션, 동시성을 공부하기 위한 토이 프로젝트입니다.
0
stars
0
forks
source link
feat: jmeter test and optimization
#26
Open
O0oO0Oo
opened
1 month ago
O0oO0Oo
commented
1 month ago
이슈 개요
jmeter 로 성능테스트
테스트 환경
MySQL
: i5-6300U 2core, 8gb
Kafka
: i5-6300U 2core, 8gb
Spring server
: i5-5300U 2core, 16gb
재현 단계
테스트 준비
[ ] 성능 비교를 위해 기존 reservation 프로젝트를 netty 에서 tomcat server 로 되돌리기
[x] 테스트 시나리오 작성
[x] 시나리오에 맞는 덤프 데이터 준비
[x] User : 1,000,000 명 (Wallet 도 유저 수 만큼)
[x] Business : 100,000 개
[x] ReservableItem : 3,000,000 개
[x] ReservableTime : 9,000,000 개
[x] 모니터링 설정 #27
[x] JMeter 코드 작성 - ui 로 대체
테스트 시작 및 개선
[x] 적절한 트래픽을 발생시키면서, 예약 생성에 관한 데이터 정합성 관찰
[x] 순간 1,000 req/sec
[x] 순간 5,000 req/sec
[x] 순간 10,000 req/sec
[x] 장기 100,000 req/sec
[x] 순간 10,000 req/sec, 보상 트랜잭션
[ ] 장기 100,000 req/sec, 보상 트랜잭션
[ ] JMeter 테스트 후 데이터 검증 자동화 로직 추가
[x] 문제 개선
[x] 중요 - Netty 블로킹 코드 제거 #33
[x] 카프카 프로듀서 개선 #31
[x] 카프카 프로세서 개선 #34
[x] Json 파싱 문제 #36
[x] 성능 개선
[x] 스레드 풀 사이즈 최적화 #39
[x] 인덱스, JPA 설정 #13
테스트 후 검증 자동화 구성
[ ] 지갑 잔액 검증
[ ] 상품 재고 검증
[ ] 예약 생성 검증
예상 동작
트랜잭션 동시성 문제 없이, 선착순으로 예약이 생성된다.
실제 동작
최종 결과
10,000 명의 유저 10,000 의 아이템 2개씩 예약 동시 요청 테스트
Throughput : 1026.6/sec
Errors % : 0%
10,000 명의 유저 500개 재고의 동일한 아이템 2개씩 예약 동시 요청 테스트
Throughtput : 795.4
Errors % : 97.5% - 250명(2.5%)의 유저가 2개씩 500개의 아이템 예약 성공, 나머지 9750명(97.5%)은 실패
이슈 개요
jmeter 로 성능테스트
테스트 환경
재현 단계
테스트 준비
테스트 시작 및 개선
테스트 후 검증 자동화 구성
예상 동작
실제 동작
최종 결과
10,000 명의 유저 10,000 의 아이템 2개씩 예약 동시 요청 테스트
10,000 명의 유저 500개 재고의 동일한 아이템 2개씩 예약 동시 요청 테스트