IT/Server

[Apache] KeepAlive 설정을 통한 성능 튜닝

토마토조아 2023. 1. 11. 17:17
728x90

현재 아파치 2.5.54 버전을 사용중이며, 별도의 설정을 하지 않더라도 HTTP/1.1 버전이 기본적으로 사용된다.

KeepAliveTimeout 개념에 대해 잠깐 짚고 넘어가도록 하자. 나의 경우 처음에는 세션이 유지되는 시간으로 착각하여, 대용량 파일 다운로드를 하는 경우 타임아웃 시간이 되면 세션이 끊어져버리는 것으로 이해하는 오류를 범하였다.

그러나 구글링을 해보니, 세션이 idle 인 상태를 유지하는 시간을 의미하는 것이다.
여기서 아래 기본값 스크린샷을 보면 세션이 idle 상태를 5초동안 유지하고 없애겠다는 소리다. 5초 이내에 다른 요청이 들어온다면 기존 것을 재활용하여 메모리 낭비를 막고 시간을 단축시키는 효과를 얻을 수 있다. 따라서 타임아웃 시간도 적절히 설정할 필요가 있다.

또한 conf/extra/httpd-default.conf 를 확인해보면 KeepAlive 가 기본으로 On 되어 있으며, 타임아웃은 5초로 되어 있는것을 볼 수 있다.

별도의 설정하지 않아도 Apache httpd-default.conf 에 KeepAlive 가 설정되어 있다.

 

실제로 웹페이지를 호출해서 보면 아래의 응답 헤더와 같이 KeepAlive 가 기본으로 설정되어 있는 것을 볼 수 있다.

웹페이지를 호출해보면 기본 KeepAlive 설정된 것이 보인다.

 

그러나 파일을 다운로드 해보면 파일 자체에는 별도로 KeepAlive 가 설정되어 있는지 안되어 있는지 알 수 없다.

 

 

그래서 httpd-default.conf 말고도 httpd.conf에 KeepAlive 를 설정해두고 파일 다운로드 시에도 성능 향상 효과가 있는지 알아보기로 한다. 나의 상태로 보면, 동시 접속 다운로드가 많기 때문에 KeepAlive 를 On으로 하고 세션 재활용을 통해 세션 생성 시간을 절약한다면 성능 향상 효과가 있지 않을까 기대하고 있다.

일단 다음과 같이 설정하여 테스트를 진행해보기로 했다. 아래 스크린 샷에는 KeepAlive 타임아웃 1초로 되어 있으나, 실제로는 3초로 설정하였다.

 

나는 아래와 같이 설정하였다.
MaxKeepAliveRequests 0 으로 설정하여 세션 유지 갯수를 무제한으로 해두었다. 메모리가 빵빵해서.. ㅎㅎ
메모리가 한정적이라면 MapKeepAliveRequests 를 적절한 갯수로 설정해야 한다.

apache/conf/httpd.conf 에 설정하였다.

만약 파일 다운로드를 해보았는데, KeepAlive 설정이 보이지 않는다면, 캐시 설정이 되어 있어서 정확히 안나오는 것일 수 있으니, 크롬의 캐시를 지우고 테스트 해보도록 한다.

 

여튼 실제로 아파치에 적용하여 파일 다운로드 테스트를 해본 결과 효과가 있는 것을 확인하였다.

1000초 동안 10000만 접속하여 파일 다운로드 가정 시, KeepAlive 적용 전과 비교하여 처리 1건당 Latency 가 평균 10~30ms 정도 줄어들었으며, 동시 접속자가 많아질 수록 차이는 더욱 커질 것으로 보인다.

KeepAlive 를 설정하는 것은 효과가 있는 튜닝이 맞는 것 같다.

 

 

추가로 읽을만한 글

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

 

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

아파치 서버에서 대규모 컨텐츠 다운로드 서버를 튜닝하면서 계속 기록을 남겨본다. 현재 구축하는 서버는 하루에 150~200만건 정도의 접속이 요청되는 서버이며, 이 중에 30~40만건은 파일 다운로

like-tomato.tistory.com

[IT/Server] - [아파치/톰캣] AH00287: server is within MinSpareThreads of MaxRequestWorkers, consider raising the MaxRequestWorkers setting 에러 해결

 

[아파치/톰캣] AH00287: server is within MinSpareThreads of MaxRequestWorkers, consider raising the MaxRequestWorkers settin

아직까지 너무나 어려운 미들웨어의 셋팅... 튜닝... 운영... 난 미들웨어 운영 담당자가 아닌데 왜...??!??!?? 아직까지 본 에러 원인 분석이 진행되고 있다. 1. WAS의 Tomcat(이하 톰캣) 에서 파일 I/O 관

like-tomato.tistory.com

 

728x90