ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Keep Alive 정리.
    카테고리 없음 2016. 6. 9. 10:13
    # HTTP는 Connection Less 방식으로 연결을 매번 끊고 새로 생성하는 구조이다.
    + Network 비용측면에서 많은 비용을 소비하는 구조이다.

    # HTTP 1.1 부터는 Keep-Alive 라는 기능을 제공한다.

    # Keep Alive란 
    + Socket에 IN/OUT Access가 마지막으로 종료된 시점부터 지정된 시간까지 Access 가 없더라도 
    대기하는 구조. 정의된 시간내에 Access 가 이뤄진다면 연결상태를 유지.

    # HTTP 에서 Keep Alive 
    + Connection Less 방식이라면 매번 Socket(port)를 열어야 하고 비용적인 측면에서 비효율적이다.
    + Keep Alive Time Out 이내에 Client 에서 Request를 재 요청하면 Socket을 새로 여는 것이아니라.
    이미 열려 있는 Socket(port)에 전송하는 구조가 된다.
    + port Conenction에 소요되는 시간을 절약하게 된다.

    # HTTP 는 기본적으로 Connection-Less 방식이다. 즉  맺어진 Socket 연결은 유지되지 않고
    매번 끊어지며, 다시 생성되는 구조이다.

    # Keep-Alive (HTTP 1.1이상) 기느잉란
    + HTTP 기본 구조를 바탕으로 맺어진 Socket연결이 종료된 시점부터 웹 서버에 정의된
    Keep-Alive Timeout 까지 기존 연결을 유지하는 기능.
    + 즉 정의된 시간 내에 새로운 HTTP 요청이 발생한다면 맺어진 Socket 연결을 지속적으로 
    유지할 수 있다. 

    # HTTP는 하나의 연결에 하나의 요청을 하는 것을 기준으로 설계가 되어있다.
    + 수십개의 이미지, 문서, css, javascript가 존재하면 원래대로라면 웹페이지 하나를 표시하기 위해
    연결을 맺고 끊는 과정을 수십번 반복해야 한다.

    # Keep Alive 설정
    + 요청 헤더에 “Connection:keep-alive”기재,
    + 응답 헤더에  “Connection:keep-alive”  - 연결을 keep-alive 상태로 유지한다.
    + Keep-Alive : timeout=5, max=100 - 하나의 연결을 5초 동안 유지한다. 최대 100개 까지 허용한다.


    # Nginx keepalive 설정값
    + keepalive_disalbe
    + keepalive_timeout
    + keepalive_requests

    # HTTP는 ConnectionLess 방식을 취한다. 웹의 경우 수백개의 파일로 이뤄진 페이지의 경우 수백번의 연결을 하는 경우
    비효율이 발생한다. 한번의 연결로 수백개의 컨텐츠를 전송하도록 해주는 것이 KeepAlive 이다.

    # KeepAlive의 timeout requests 설정은 왜 필요한가?
    + 네트워크 상황이 좋지 않을 때, KeepAlive 연결 상태에서 전송 문제가 생긴경우, 
    + Client에서 데이터 전송을 하지 않을 경우, 
    + 서버 자원은 무한정이 아니기에 이러한 접속을 계속 유지하는 것은 Server 에 손실을 발생시키고
    접속 장애로 이어진다.




    # Socket 이란





Designed by Tistory.