Keep-Alive
Keep-Alive는 HTTP 헤더로, 웹 서버가 웹 브라우저의 여러 요청에 하나의 연결을 사용할 수 있게 합니다. HTTP/1을 실행하는 서버는 웹 사이트 성능을 향상하기 위해 Keep-Alive를 켜 두는 경우가 많습니다. HTTP/2에서는 Keep-Alive 헤더가 HTTP/2 프로토콜의 기본 동작이므로 사용하지 않습니다.
웹 서버에서 Keep-Alive를 활성화하면 서버와 클라이언트(웹 사이트 방문자) 사이에 지속적인 연결이 생성됩니다. TCP 연결은 닫히거나 시간이 초과될 때까지 열려 있습니다. 각 TCP 연결은 핸드셰이크 과정을 완료해야 하므로 연결이 여러 개이면 페이지 로드 시간이 늘어납니다. Keep-Alive를 사용하면 브라우저가 이미지와 CSS 파일 같은 모든 웹 페이지 리소스를 하나의 연결을 통해 다운로드할 수 있습니다.
Keep-Alive의 단점은 웹 서버에서 더 많은 시스템 리소스가 필요하다는 것입니다. 서버의 웹 사이트에 많은 트래픽이 유입되면 서버에 여러 개, 많게는 수천 개의 지속적인 연결이 한 번에 열릴 수 있습니다. 결국 서버가 새 연결을 처리하지 못하고 응답하지 않게 될 수 있습니다. Apache는 서버가 최대 용량에 도달하지 않도록 다음 지시어를 제공합니다:
- KeepAliveTimeout - 새 요청을 기다리는 동안 지속적인 연결이 열려 있을 수 있는 최대 시간
- MaxKeepAliveRequests - 연결을 초기화하기 전에 하나의 연결에서 허용되는 최대 요청 수
Apache 서버에서 Keep-Alive를 활성화하려면 서버 전체에 적용되는 include 파일이나 특정 웹 사이트의 .HTACCESS 파일에 다음 코드를 추가합니다:
<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>
지식 테스트하기