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
반응형