Skip to content

[Step6]: Virtual Thread와 Fair Semaphore를 활용하여 Redis 커넥션 병목을 개선하고 선착순을 보장하도록 구현한다 #19

@woong2e

Description

@woong2e

📝 Description

  • Redis 커넥션 풀 경합 및 System CPU 부하 해결: 대규모 트래픽 유입 시 Redis 커넥션(Lettuce)을 얻기 위한 스레드 간의 락 경합과 과도한 컨텍스트 스위칭으로 인해 System CPU가 100%에 도달하는 현상을 개선
  • 가상 스레드(Virtual Thread) 도입: 톰캣 스레드가 대기(Park) 상태에 빠질 때 발생하는 OS 자원 낭비를 막기 위해 가상 스레드를 활성화하여 시스템의 동시 처리 능력을 극대화
  • 공정성(Fairness)을 보장하는 대기열 구현: Redis 접근 앞단에 Semaphore(permits, fair=true)를 배치하여 락 경합 비용을 대폭 낮추고, 선착순 이벤트에 필수적인 FIFO 순서를 보장

📝 Todo

  • application.yml 내 Spring Boot 가상 스레드 활성화 (spring.threads.virtual.enabled: true)
  • 서버 환경에 맞춰 Redis (Lettuce) 커넥션 풀 사이즈 최적화 (예: max-active, max-idle 수치 상향)
  • 내 커넥션 풀 사이즈에 맞춘 세마포어(Semaphore(permits, true)) 객체 추가

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions