본문 바로가기

Database/Redis

(3)
Redis Session 병목 해결 및 최적화하기 https://liasn.tistory.com/7 nGrinder로 성능 테스트 과정에서 발견한 Redis Session 병목 애플리케이션 서버를 개발하고 '나의 서버는 어느 정도의 트래픽을 처리할 수 있을까?'라는 고민을 할 수 있습니다. 하지만 여러 개의 브라우저를 띄워 동시에 요청을 보내는 방법은 한계가 있 liasn.tistory.com 이전 글에서 'TPS 수치가 0이 되는 시점에 CPU 사용량의 대부분을 차지하는 스레드가 모두 위의 스택 정보를 가진다면 병목 현상은 WAS에서 Redis Session을 만료 처리하는 과정에서 발생한다.'라는 가설을 세웠는데 이번 글에서는 가설 입증을 위해 병목이 왜 발생했고, 해결 방법은 무엇이고, 해결하면 병목이 사라지는지를 확인해 보도록 하겠습니다. 발생 ..
로컬 캐싱에서 글로벌 캐싱으로 변경한 이유 애플리케이션 서버의 조회 성능을 끌어올리기 위한 방법 중 캐싱이 있습니다. 제가 스프링 기반 프로젝트를 진행하면서 왜 로컬 캐싱을 적용했고 글로벌 캐싱으로 변경했는지 알아보겠습니다. 캐싱이란? 캐싱은 어떤 요청에 대한 결과를 임시적으로 저장하는 행위를 말합니다. 예를 들어, A라는 매개 변수로 메소드를 호출했을 때 그 결과를 임의의 공간에 임시 저장하고 똑같은 A라는 매개 변수로 메소드 호출이 들어왔을 때 실제 작업이 수행되지 않고 임시 저장 중인 결과를 반환하는 형태입니다. 주목적은 성능 향상과 동시에 부하 방지라고 말씀드릴 수 있습니다. 나의 프로젝트에 캐싱이 필요한 이유는? 저의 프로젝트에는 캠핑용품 유형 데이터가 존재합니다. 유형에는 텐트, 의자, 코펠, 버너와 같은 여러 가지가 될 수 있는데요...
Scale out 확장 구조에서 Session 불일치 문제와 해결 방법 저번 글에서 서버의 확장은 어떤 것들이 있는지 알아봤습니다. 서버의 확장? Scale up과 Scale out이란? 웹 서버 애플리케이션을 개발하고 운영하다 보면 여러 가지 상황을 마주하게 됩니다. 그중 하나는 서버의 처리 능력보다 많은 양의 트래픽이 들어오는 상황 서버를 배포하고 운영 중인데 서버 liasn.tistory.com Scale out 확장을 선택하면 데이터 정합성 문제를 반드시 해결해야 합니다. 그렇다면 실제 프로젝트에선 어떤 식으로 발생할까요? 저의 웹 서버 애플리케이션은 로그인에 대한 인증 기능을 세션 기반으로 구현했습니다. 이때, Scale out을 통해 여러 대의 서버로 요청을 처리하도록 분산 서버 환경을 만들면 각 서버 별로 로그인 세션 정보가 다른 세션 불일치 문제가 발생합니다...