답변:
좋은 질문입니다!
전통적으로 KeepAlive는 모든 이미지, CSS, js와 같은 많은 요청이 한 서버에서 제공되는 전체 페이지로드의 TCP 오버 헤드를 크게 줄이므로 좋은 방법이었습니다. 페이지에 85 개의 자산이 있으면 85 개의 추가 3 방향 TCP 핸드 셰이크가되고 대기 시간이 늘어납니다. 몇 년 전 인터넷 연결 속도가 느리면 모바일 브라우저 나 대기 시간이 길거나 대기 시간이 긴 연결과 여전히 관련이 있지만 지금보다 훨씬 중요했습니다.
그러나 여기에 언급 된 영향은 TCP 연결이 열려있는 시간 및 Apache 하위 프로세스를 빠르게 소모 할 수 있는지 여부와 관련이 있습니다. 내가 본 대부분의 기본값은 다음과 같습니다.
KeepAliveTimeOut 15
MaxClients 256
즉, 동일한 15 초 내에 256 개의 서로 다른 브라우저가 콘텐츠를 요청하면 257 번째 클라이언트가 연결이 끊길 때까지 기다려야합니다. 좋지 않음-트래픽이 많지 않으므로 조언을 설명합니다. 또한 MaxClient를 증가시켜 많은 메모리를 소비 할 수 있습니다. KeepAlives를 사용할 때는 일반적으로 KeepAliveTimeout을 2 초 또는 3 초로 설정합니다. 모든 요청에 대한 전체 시간이 아니라 요청 간 유휴 시간입니다.
KeepAlive를 사용하는 경우 KeepAliveTimeout, MaxClients 및 서버 리소스간에 균형 조정 작업이 있습니다. 이를 돕기 위해 'service httpd / apache2 fullstatus'는 KeepAlives가 한 번에 사용중인 연결 수를 표시하며 대문자 'K'로 표시됩니다.
그러나 마 젠토에게는 KeepAlives가 필요하지 않다고 생각합니다.
당신은 어떻게 해야 당신이 매우 높은 트래픽 기업 사이트가있는 경우 일을, 정적 콘텐츠에 대한 CDN을 사용하고 있습니다.
여러 국가에서 판매하는 경우 CDN을 사용하면 고객의 전체 페이지로드 속도가 빨라질뿐 아니라 서버로 들어오는 대역폭이 크게 줄어 듭니다. 시스템> 구성> 웹> [비보안]의 설정으로 미디어, 스킨 및 JavaScript에 대한 CDN을 통합하는 것이 매우 간단합니다. 이는 실제 HTTP 요청의 대부분이되며 보너스로 다른 DNS 레코드를 사용하여 호스트 이름 전체에서 다운로드를 병렬 처리 할 수 있습니다. 올바르게 수행하면 해당 요청이 서버에 거의 영향을 미치지 않으므로 더 이상 실제 필요가 없습니다.KeepAlive를 위해. 이 경우 KA를 비활성화해야합니다. 우리는 콘텐츠의 다른 부분이 다른 곳에서 제공되고 있음을 알고있을 때 연결을 유지하고 싶지 않습니다. 독립형 CDN 권장 사항을 원하는 경우 : CloudFlare는 환상적이며 무료 패키지와 함께 SSL도 제공됩니다.
이와 같은 CDN을 사용하거나 Varnish와 같은 다른 종류의 리버스 프록시를 사용하는 경우 Apache HTTP KeepAlives는 기본적으로 관련이 없습니다.
요약하자면, 로드시 Apache 프로세스가 포화되지 않도록하려면 KeepAlive 를 비활성화해야 하지만 자산에 CDN 또는 다른 리버스 프록시를 사용하여 페이지로드를 최대한 빠르게 유지해야합니다.