Skip to content

[REFACTOR] 낙관적 락 백오프(Thread.sleep) 제거 및 Redisson tryLock 적용 #23

Description

@ji-circle

💡 리팩터링 대상 및 이유

DB 커넥션 풀 고갈과 톰캣 스레드 풀 병목 현상을 해결하기 위해, DB 락 대기 방식을 Redis 인메모리 분산 락으로 교체하여 쓰기 성능을 극대화

🔍 현재 코드 상태 (문제점)

StockCommandService에서 @Version 기반 낙관적 락을 사용 중이며, 충돌 시 while문과 Thread.sleep으로 백오프를 수행하여 부하 집중 시 애플리케이션 전체의 DB ConnectionTimeout을 유발함

✅ 체크리스트 (구현할 내용)

  • RedissonClient 연동 및 RLock lock = redissonClient.getLock("stock:" + optionId) 적용
  • 기존 낙관적 락(Version) 관련 재시도 로직 및 예외 캐치문 삭제

🚀 기대 효과

  • DB 커넥션 점유 시간이 극단적으로 감소하여 TPS가 대폭 상승
  • 500 에러 타임아웃 소멸

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions