Spring & Spring Boot/Nginx

[11] Nginx(엔진 x) - Load Balancing(로드 밸런싱), Least Time(최소 시간)

carrotweb 2026. 10. 19. 21:57
728x90
반응형

Least Time(최소 시간)

적은 활성 연결 수와 평균 응답 시간이 가장 짧은 서버로 요청을 보내는 방식입니다.

 

 

Least Time(최소 시간) 설정

1. C:\workspaces\docker\nginx\conf\upstream.conf 파일을 수정합니다.

Least Connections를 위해 upstream 블록을 추가합니다.

:

# Least Time
upstream backend_servers_leasttime {
    least_time last_byte;
    server dev-transmission:8080;
    server dev-transmission-second:8080;
}

저는 도커 컨테이너로 실행하기 때문에 IP 대신 컨테이너 이름으로 설정하였습니다.

 

upstream 블록 안에 least_time 지시어와 다음 매개변수를 추가만 하면 매개변수를 기반으로 평균 응답 시간을 계산하여 가장 짧은 서버로 요청을 보냅니다.

least_time header | last_byte [inflight];
  • header : 서버로부터 첫 번째 바이트를 수신하는 데 걸리는 시간
  • last_byte : 서버로부터 전체 응답을 받는 데 걸리는 시간
  • last_byte inflight : 불완전한 요청을 고려하여 서버로부터 완전한 응답을 받는 데 걸리는 시간

더 자세한 least_time 설명은 Nginx Docs(https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time)를 참고하시기 바랍니다.

 

2. C:\workspaces\docker\nginx\default.conf 파일을 수정합니다.

Least time으로 요청이 전달되게 backend_servers_iphash를 backend_servers_leasttime로 변경합니다.

server {
    :

    # /로 들어온 요청 (모든 요청)
    location / {
        # 요청을 전달
        proxy_pass http://backend_servers_leasttime;

        :

    }
}

 

3. 변경된 설정을 적용하기 위해서 Nginx를 Reload 합니다.

# 문법 검사
docker compose exec nginx nginx -t
# Nginx Reload
docker compose exec nginx nginx -s reload

 

4. http://127.0.0.1으로 접속한 후 여러 번 호출합니다.

Nginx의 log를 보면 응답 시간이 짧은 서버로 요청을 보내어 처리된 것을 확인할 수 있습니다.

172.20.0.3:8080 1.352 172.20.0.1 - - [16/Oct/2026:16:06:48 +0000] "GET / HTTP/1.1" 200 893 "-" 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.
0.0 Safari/537.36" "-"

172.20.0.4:8080 0.005 172.20.0.1 - - [16/Oct/2026:16:07:00 +0000] "GET / HTTP/1.1" 200 893 "-" 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.
0.0 Safari/537.36" "-"

172.20.0.4:8080 0.003 172.20.0.1 - - [16/Oct/2026:16:07:00 +0000] "GET / HTTP/1.1" 200 893 "-" 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.
.0 Safari/537.36" "-"

 

 

728x90
반응형