Coding 01

캐시 스탬피드 현상 본문

기술면접

캐시 스탬피드 현상

하루우울루 2025. 1. 30. 19:25

트래픽 환경에서 캐시를 사용하는데, Cache Aside(캐시 미스 발생 시 적재) 전략을 사용한다.

이때 많은 요청이 동시에 캐시 미스를 확인하고 DB에서 데이터를 가져와 캐시에 적재를 하는데 이것을 캐시 스탬피드 또는 Thundering Herd라고 한다.

 

이 문제는 잠금(Locking) 방식, 외부 재계산(External Recomputation) 방식, 확률적 조기 재계산 방식으로 해결할 수 있다.

 

잠금방식(Locking)은 요청 처리 스레드가 해당 캐시 키에 대해 잠금을 획득한다고 생각하면 된다.

다른 요청 처리 스레드들은 대기를 하고 잠금을 획득한 스레드는 요청동안 캐시 적재 작업이 비동기로 처리된다.

잠금을 사용해서 성능 저하가 될 수 있다.

 

외부 재계산(External Recomputation) 방식은 모든 요청 처리 스레드가 캐시 적재를 하지 않는다. 

캐시를 주기적으로 모니터링하는 스레드를 별도로 관리해서 캐시의 만료시간이 다가올 때, 데이터를 갱신해서 문제를 해결한다.

이 방식은 다시 사용되지 않을지도 모르는 데이터를 캐시로 적재해서 메모리를 비효율적으로 사용할 수 있다.

 

확률적 조기 재계산 방식은 캐시 만료 시간이 얼마 안남았을 때, 여러 요청 처리 스레드 중에서 적은 수만 캐시를 적재하는 작업을 수행해서 스탬피드 현상을 완화하는 방법이다.

 

'기술면접' 카테고리의 다른 글

OneToOne관계에서 Lazy Loading  (0) 2025.04.08
try-with-resources  (0) 2025.04.07
컨텍스트 스위칭  (0) 2025.01.27
스케일 아웃과 스케일 업  (0) 2025.01.24
ACID  (0) 2025.01.23