아파치 서버에서 대규모 컨텐츠 다운로드 서버를 튜닝하면서 계속 기록을 남겨본다.
현재 구축하는 서버는 하루에 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 이고, 적용 후는
'IT > Server' 카테고리의 다른 글
[Apache] KeepAlive 설정을 통한 성능 튜닝 (0) | 2023.01.11 |
---|---|
[Apache] Jmeter(제이미터) Error in NonGUIDriver com.thoughtworks.xstream.io.StreamException: (0) | 2023.01.04 |
[Apache] Jmeter(제이미터) 테스트 시나리오 작성법(jmx 파일) (0) | 2023.01.04 |
[Apache] Jmeter(제이미터) 부하 테스트 방법(콘솔 명령어 기반) (0) | 2023.01.03 |
[Apache] Jmeter(제이미터) 성능 테스트 도구 사용법 (0) | 2023.01.02 |