IT/Server

[Apache] 아파치 튜닝 파일 다운로드 캐시 적용하기 (mod_expires)

토마토조아 2023. 1. 5. 15:25
728x90

아파치 서버에서 대규모 컨텐츠 다운로드 서버를 튜닝하면서 계속 기록을 남겨본다.

현재 구축하는 서버는 하루에 150~200만건 정도의 접속이 요청되는 서버이며,

이 중에 30~40만건은 파일 다운로드를 위한 요청이 들어오고 있는 상태이다.

아파치 기본 설정만으로는 이 많은 접속을 다 해결할 수도 없고, 로드밸런싱만도 답은 아니고, 다양한 아파치 튜닝이 필요할 것 같다.

기본적인 3-Tier 구조의 WEB-WAS-DB 구조이며, 별도의 파일 배포 서버를 별도로 가지고 있다.

CDN을 구축하는 방법도 있으나 아직 저정도의 규모까지는 아니라는 판단이며, 비용적인 부분도 생각해야 해서 일단은 추가 배포서버만 구성하는 것으로 진행을 하고 있다.

 

mod_expires 라는 것은 아차피 서버 내 정적 컨텐츠(그림, 문서, 파일 등)과 같이 변화가 거의 일어나지 않는 것들에 대한 캐시 정책이다.

최초 A라는 파일을 다운로드 받거나 액세스 했다면, A 파일은 디스크 캐시 영역에 가지고 있게 되고, 그 2번째 요청 이후부터는 캐시 영역에 있는 컨텐츠를 가져가도록 하기 때문에 성능이 높아지게 된다.

 

적용방법

/apache/conf/httpd.conf 파일 내 해당 부분 주석 해제

/apache/conf/httpd.conf 파일 내 mod_expires.c 내용  추가
우리의 경우 apk 다운로드 후 설치가 되는 부분을 캐싱하면 되기때문에 아래와 같이 설정했다.
vnd.android.package-archive = 웹에서 안드로이드 앱 다운 대상이 되는 파일을 캐싱하기 위한 옵션을 주었다.

 

적용확인

크롬에서 해당 apk가 담긴 url을 치면 다운이 되며, 크롬 개발자 도구(F12)를 누르고 네트워크 부분을 살펴보면, 해당 파일이 캐싱이 적용되었는지 확인할 수 있다.

캐싱 적용 전

 

캐시 적용 후

 

이처럼 간단한 과정을 통해 캐시를 적용할 수 있다.

네트워크 타이밍 쪽을 보면

적용 전은 142.5 ms 이고, 적용 후는

캐시 적용 전

 

캐시 적용 후

728x90