본문 바로가기
MiddleWare(상용 미들웨어)/WebtoB

[WebtoB] Keepalive 설정에 대하여

by wonkidoki 2025. 7. 30.
반응형

- WebtoB의 KeepAlive 설정클라이언트와 웹 서버 간의 연결을 일정 시간 동안 유지하여, 여러 개의 요청을 하나의 TCP 연결로 처리할 수 있도록 하는 기능이다. 이를 통해 성능을 향상시키고, 불필요한 연결 수립 비용을 줄일 수 있다.

 

연결 재사용 클라이언트가 여러 HTTP 요청을 보낼 때, 매번 새로운 TCP 연결을 생성하지 않고 기존 연결을 재사용함
응답 지연 최소화 연결 설정/해제에 드는 오버헤드를 줄여 응답 속도를 빠르게 함
서버 부하 감소 빈번한 TCP 연결 수립(3-way handshake)과 해제(4-way termination)에 따른 CPU/메모리 낭비 방지
웹 페이지 렌더링 최적화 HTML, JS, CSS, 이미지 등 여러 자원을 순차적으로 요청할 때 성능 향상
보안 연결 유지 HTTPS 사용 시 TLS 핸드셰이크도 반복하지 않아 부하와 지연이 줄어듬

 

- 너무 긴 KeepAliveTimeout은 서버 자원을 낭비할 수 있습니다. 반대로 너무 짧으면 연결 재사용 효과가 줄어든다.

- KeepAlive 연결은 커넥션 풀의 소켓을 장시간 점유하므로, 적절한 설정이 중요하다.

- WAS와 연동 시에도 KeepAlive 설정이 맞춰져 있어야 성능 이점을 누릴 수 있다.


다음은 Keepalive 관련 설정에 대한 설명이다.

 

Keepalive

  • 종류: Boolean
  • 기본값: Y
  • Keepalive(HTTP persistent connection) 사용 여부를 결정한다.
  • 다음은 설정값에 대한 설명이다.
  • 설정값설명
    Y 사용자는 연결을 재사용하여 한 번의 연결로 여러 개의 요청을 처리할 수 있다.
    N 사용자는 요청을 처리하기 위해 매번 소켓을 다시 연결해야 한다.

KeepaliveTimeout

  • 종류: Numeric
  • 단위: 초
  • 범위: 1 ~ INT_MAX
  • 기본값: 60
  • Keepalive를 유지하는 시간을 설정한다.
  • 사용자 요청 처리가 끝난 후 설정된 시간이 지나면 연결을 끊는다.

KeepaliveMax

  • 종류: Numeric
  • 범위: 0 ~ INT_MAX
  • 기본값: 0
  • Keepalive 요청 건수를 제한할 경우 설정한다.
  • 0으로 설정하는 경우 요청 건수를 제한하지 않는다.

KeepAliveErrorStatusCode

  • 종류: Literal
  • 범위: 255자 이내
  • 에러 응답을 보낸 이후 사용자 연결을 유지(persistent connection, keep-alive)하는 경우 해당되는 HTTP Status Code를 설정한다.
  • 콤마(,)로 구분하여 여러 Status Code를 설정할 수 있다.
  • WebtoB가 사용자 요청에 대해 "304 Not Modified"를 제외한 3xx나 4xx 혹은 5xx HTTP Status Code로 응답할 경우 연결을 유지하지 않고 응답을 보낸 이후 연결을 종료한다.
  • 다음은 "302 Found"와 "404 Not Found" 응답을 보낸 후 WebtoB가 클라이언트의 연결을 종료하지 않고 유지하는 예제이다.
  • *NODE mynode ..., KeepAliveErrorStatusCode = "302,404", ...
 

 

사용 예시

 

*NODE testnode

...

KeepAlive =  Y # KeepAlive 사용
KeepAliveTimeout 15   # 15초 동안 유휴 연결 유지
MaxKeepAlive     100  # 최대 100개의 요청까지 연결 재사용 허용

...