http는 state less이며 connection less이다.

즉 계속 연결되어 있는 상태가 아니라 하고싶은 말만하고 연결을 끊는다.

이 방식을 채택하게된데는 바로 "여러 클라이언트의 접속"을 원활히 하기 위해서이다.

하지만 당연히 비연결 지향이라는것은 단점역시 가지고 있다.

인터넷에서 모든 데이터는 보내는데 생각보다 많은 비용을 지불한다.

그래서 추가한 기능이 바로 keep alive이다.

https://t1.daumcdn.net/cfile/tistory/99430A4E5D1E5E6A0A

왼쪽의 경우를 보면 데이터를 주고 받을 때 열고 닫고를 반복한다.

그러나 keep alive를 설정하면 데이터를 계속 주고 받을 수 있다. 바로 우리가 지정한 시간 내에서 말이다.

데이터를 빈번하게 주고받아야한다면 좋은 선택이 될 수 있다.

단 무조건 좋은 기능은 아니다.

사실 keepalive는 오히려 성능 하락의 주범인 경우가 많다.

사용자가 많다면 연결이 늘어나서 새로운 사용자를 받아들이지 못하는 경우가 빈번히 일어난다.

그래서 사용자가 많고 유동이 많은 서비스에서는 사용이 권장되지 않는다.

이게 어떻게 설정하고 동작하는지 서버별로 보자.

apache

https://t1.daumcdn.net/cfile/tistory/996190335D1E5F9809

apache에서는 keep alive의 default는 on상태이다.