반응형
- 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개의 요청까지 연결 재사용 허용
...