keepalive란
서버와 클라이언트가 맺은 연결을 유지하는 방식을 의미
HTTP 트랜잭션이 완료된 후에도 클라이언트와 서버 간의 TCP 연결을 열어둔다.
클라이언트가 다른 HTTP 트랜잭션을 수행해야 하는 경우 새 TCP 연결을 만드는 대신 유휴 Keepalive 연결을 사용한다.
장점
3-way handshacking overhead 줄임
단점
메모리 사용 증가 - connection을 열고 대기
server - keepalive 설정
http {
keepalive_timeout 0;
server {
// ..
}
}
upstream - keepalive 설정
http {
server {
listen 10001;
server_name test.server.com;
location / {
proxy_pass http://test_server;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
upstream test_server {
keepalive_timeout 0;
keepalive 8;
keepalive_requests 1000;
server 127.0.0.1:8080;
}
}
nginx keepalive 설정 유의 사항
- http_version 1.1 설정 필요
- connection ""
Nginx-Tomcat
기본적으로 root 설정은 keepalive를 끄고 (http 블록의 keepalive-timeout : 0)
tomcat과의 통신에만 keepalive 사용 ( upstream 블록에 keepalive 설정 추가 )