Nginx upstream
웹 애플리케이션 서버를 (Spring, flask..) Container 자체적으로 실행하는 경우는 거의 없고 대부분 nginx에서 proxy 하는 경우가 많다.
이렇게 하면 ssl, auth, cache 등의 요구사항을 쉽게 적용, 변경할 수 있다.
이때 nginx는 client 입장이 되는데, keepalive 설정을 할 수 있다.
keepalive
upstream 접속에 사용될 connection 수. 각 worker process에서 cache 하고 있으며 최대 수에 도달하면 가장 최근에 사용된 connection이 closed 된다.
upstream backend {
server backend1.example.com;
keepalive 32;
}
server {
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
keepalive 수는 성능 테스트를 하며 조절하면 된다.
보통 16 ~ 32를 넘어갈 일은 없을 듯. 하지만 traffic, 서버 사양에 따라 1000, 2000개를 넘게 설정해야 할 수도 있다.
생각 할거
내부적으로 tcp connection 생성 비용이 줄어들어야 하지만... 확인 결과 cpu, ram에 드라마틱한 차이는 없었다. 하지만 nginx -> upstream 서버로 connect 하는 시간은 확실히 줄어들었다.
Connection header의 역할에 대하여 알아두면 좋다. nginx 공식 문서에 따르면 http version은 1.1로 지정 되어야 하고 Connection header는 빈 값으로 전달 해야 한다.
websocket 관련한 애플리케이션에서는 작동하지 않을 수 있다. 다른 설정이 필요한데 검색 해보면 나온다.
관련 링크
'개발 > Linux,Server' 카테고리의 다른 글
맥에서 zip 압축해제 오류 (오류 22 - 유효하지 않은 변수, Illegal byte sequence) (0) | 2020.04.01 |
---|---|
우아한 Redis - 강대명 (0) | 2019.11.21 |
Nginx socket 개수 확인 (0) | 2019.04.26 |
리눅스 설치일자 확인하기 (0) | 2019.04.12 |
CentOS에서 python3, pip3 설치 (0) | 2019.04.01 |