비관적 락과 레디스 락 쿠폰 발급 테스트 비교 분석

coldrice99·2024년 12월 18일
0

비관적 락과 레디스 락 쿠폰 발급 테스트 비교 분석


1. 테스트 환경

  • 테스트 도구: nGrinder
  • 테스트 스크립트: 로그인 후 쿠폰 발급 API 호출 (동일한 API 테스트)
  • Vuser 수: 99명 → 99명의 가상 사용자가 동시에 부하를 발생시킴
  • Processes/Threads: 3 프로세스, 각 프로세스당 33 쓰레드
  • Duration: 1분 → 테스트는 1분간 진행
  • Ramp-Up: 비활성화 (즉시 99명의 사용자 부하 발생)
  • 테스트 조건:
    • 비관적 락: 데이터베이스 수준에서 락 관리
    • 레디스 락: RedissonClient를 이용한 분산 락 관리

2. 결과 비교

지표비관적 락레디스 락비교
TPS (초당 처리율)90.53,938.0레디스 락이 약 43배 이상 우수
Peak TPS (최대 TPS)1174,811레디스 락이 압도적으로 높음
Mean Test Time1,089.81 ms22.95 ms레디스 락이 47배 빠름
Executed Tests4,958214,969레디스 락이 약 43배 많은 요청을 처리
Successful Tests4,958214,969모두 100% 성공
Errors00오류 없음

3. 성능 분석

비관적 락
  • TPS: 90.5
  • Mean Test Time: 1,089.81 ms

비관적 락은 데이터베이스 수준에서 자원에 대한 락을 독점하기 때문에 경합이 심해질수록 대기 시간이 길어지고, 동시 요청을 처리하는 데 병목이 발생.

  • 5,000건의 요청만 성공적으로 처리되었으며, 초당 처리량이 90~117 TPS로 제한.

주요 원인:

  • 락을 획득한 트랜잭션이 완료될 때까지 다른 쓰레드가 대기해야 함.

레디스 락
  • TPS: 3,938.0
  • Mean Test Time: 22.95 ms

레디스 락은 Redis의 분산 락 기능을 활용하여 더 빠르게 락을 관리하고 해제. 트랜잭션 부담이 줄어들어 더 많은 동시 요청을 효율적으로 처리.

  • 214,969건의 요청을 처리하였으며, 초당 처리량은 3,938 TPS에 달한다.

주요 원인:

  • 레디스 락은 락의 획득/해제가 비동기적이고 빠르게 이루어지며, 데이터베이스에 직접 락을 걸지 않음.

4. 결론

  • 레디스 락비관적 락과 비교하여 성능이 월등히 우수합니다.
  • 특히 TPS평균 응답 시간에서 큰 차이를 보이며, 동시 요청이 많은 환경에서 레디스 락이 훨씬 더 적합.

| 결론 | 비관적 락은 데이터 무결성이 절대적으로 중요한 시스템에 적합하지만, 성능 병목이 발생할 수 있다. |
| 레디스 락은 동시성이 중요한 대규모 시스템에서 성능 병목을 해소하는 데 효과적. ✅ |


5. 제언

  • 대규모 동시 요청을 처리해야 하는 시스템에서는 레디스 락을 사용하는 것이 권장.
  • 데이터 무결성이 절대적으로 필요하고 경합이 적은 시스템에서는 비관적 락을 사용할 수 있다.
profile
서두르지 않으나 쉬지 않고

0개의 댓글