안정적인 환경에서는 다 잘 된다. 중요한 건 트래픽이 폭증하거나 서버가 죽었을 때다.
7편에서 균등 트래픽 조건으로 6가지 알고리즘을 테스트했다. Round Robin은 요청은 균등하게 보냈지만 연결이 쌓였고, Least Response Time은 RPS는 압도적이었지만 사실상 단일 서버 운영이었다.
이번 편에서는 두 가지 시나리오를 추가한다.
Steady Load에서는 잘 보이지 않던 각 알고리즘의 특성이 여기서 드러난다.
GET /testimport http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 10 }, // 워밍업
{ duration: '10s', target: 250 }, // 급격한 증가
{ duration: '1m', target: 250 }, // 피크 유지
{ duration: '10s', target: 10 }, // 급격한 감소
{ duration: '30s', target: 10 }, // 안정화
],
};
export default function () {
const res = http.get('http://localhost:8080/test');
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 2000ms': (r) => r.timings.duration < 2000,
});
sleep(0.1);
}
█ TOTAL RESULTS
checks_total.......: 102614 730.013546/s
checks_succeeded...: 100.00% 102614 out of 102614
checks_failed......: 0.00% 0 out of 102614
✓ status is 200
✓ response time < 2000ms
HTTP
http_req_duration..............: avg=252.55ms min=50.49ms med=182.26ms max=534.04ms p(90)=502.34ms p(95)=502.95ms
{ expected_response:true }...: avg=252.55ms min=50.49ms med=182.26ms max=534.04ms p(90)=502.34ms p(95)=502.95ms
http_req_failed................: 0.00% 0 out of 51307
http_reqs......................: 51307 365.006773/s
EXECUTION
iteration_duration.............: avg=352.84ms min=150.61ms med=283.35ms max=634.4ms p(90)=602.61ms p(95)=603.31ms
iterations.....................: 51307 365.006773/s
vus............................: 10 min=1 max=250
vus_max........................: 250 min=250 max=250
NETWORK
data_received..................: 7.7 MB 55 kB/s
data_sent......................: 3.8 MB 27 kB/s

처리량
응답시간
안정성
서버 선택 비율: 약 25% 균등 분배
서버별 P95 응답시간 (초)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0.0545 | 0.151 | 0.302 | 0.503 |
Active Connections (피크 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 9 | 27 | 54 | 88 |
→ Steady(4/11/22/36) 대비 약 2.5배 증가. VU 250이니 당연한 결과
→ server-4에 88개 연결이 쌓임 — burst 시 느린 서버의 부하 집중이 더 심해짐
Algorithm Duration: ~1μs (RR 특성상 일정)
Error Rate: No data (에러 없음)
Steady vs Burst 비교 (Round Robin):
| 지표 | Steady (100 VU) | Burst (10→250→10) |
|---|---|---|
| RPS | 281.9 | 365.0 |
| avg | 253.58ms | 252.55ms |
| med | 253.95ms | 182.26ms |
| Active Conn (server-4) | 36 | 88 |
| 에러율 | 0% | 0% |
가중치: server-1(6) : server-2(3) : server-3(2) : server-4(1)
█ TOTAL RESULTS
checks_total.......: 140590 1001.475287/s
checks_succeeded...: 100.00% 140590 out of 140590
checks_failed......: 0.00% 0 out of 140590
✓ status is 200
✓ response time < 2000ms
HTTP
http_req_duration..............: avg=157.09ms min=50.48ms med=150.83ms max=627.57ms p(90)=303.93ms p(95)=502.01ms
{ expected_response:true }...: avg=157.09ms min=50.48ms med=150.83ms max=627.57ms p(90)=303.93ms p(95)=502.01ms
http_req_failed................: 0.00% 0 out of 70295
http_reqs......................: 70295 500.737643/s
EXECUTION
iteration_duration.............: avg=257.37ms min=150.58ms med=250.96ms max=727.84ms p(90)=404.31ms p(95)=602.22ms
iterations.....................: 70295 500.737643/s
vus............................: 10 min=1 max=250
vus_max........................: 250 min=250 max=250
NETWORK
data_received..................: 11 MB 75 kB/s
data_sent......................: 5.2 MB 37 kB/s

서버 선택 비율: 가중치 비율대로 분배 (6:3:2:1)
서버별 P95 응답시간 (초)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0.0524 | 0.151 | 0.302 | 0.503 |
Active Connections (피크 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 25 | 39 | 48 | 40 |
Algorithm Duration: ~2.8μs
Error Rate: No data (에러 없음)
WRR Steady vs Burst 비교:
| 지표 | Steady (100 VU) | Burst (10→250→10) |
|---|---|---|
| RPS | 387.4 | 500.7 |
| avg | 157.1ms | 157.09ms |
| Active Conn | 6/14/18/16 | 25/39/48/40 |
| 에러율 | 0% | 0% |
avg가 완전히 동일 — WRR의 가중치 분배가 부하 증가에도 일관성 유지
Active Connections 비율도 유사
Steady(6/14/18/16) → Burst(25/39/48/40), 비율 패턴이 거의 동일하게 스케일링
RR Burst 대비 확실한 개선 — RR은 server-4에 88개 쌓였지만 WRR은 40개로 억제
Burst 비교표 (현재까지):
| 지표 | RR | WRR |
|---|---|---|
| RPS | 365.0 | 500.7 |
| avg (ms) | 252.55 | 157.09 |
| Active Conn (server-4) | 88 | 40 |
| 에러율 | 0% | 0% |
█ TOTAL RESULTS
checks_total.......: 152568 1087.790019/s
checks_succeeded...: 100.00% 152568 out of 152568
checks_failed......: 0.00% 0 out of 152568
✓ status is 200
✓ response time < 2000ms
HTTP
http_req_duration..............: avg=136.8ms min=182µs med=53.24ms max=561.89ms p(90)=302.9ms p(95)=501.88ms
{ expected_response:true }...: avg=136.8ms min=182µs med=53.24ms max=561.89ms p(90)=302.9ms p(95)=501.88ms
http_req_failed................: 0.00% 0 out of 76284
http_reqs......................: 76284 543.89501/s
EXECUTION
iteration_duration.............: avg=237.09ms min=150.57ms med=153.58ms max=662.15ms p(90)=403.22ms p(95)=602.09ms
iterations.....................: 76284 543.89501/s
vus............................: 10 min=1 max=250
vus_max........................: 250 min=250 max=250
NETWORK
data_received..................: 11 MB 81 kB/s
data_sent......................: 5.6 MB 40 kB/s

서버 선택 비율: server-1이 가장 큰 비율 (빠른 서버 우선 선택)
서버별 P95 응답시간 (초)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0.0524 | 0.151 | 0.302 | 0.503 |
Active Connections (피크 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 21 | 35 | 35 | 35 |
→ Steady 때의 완벽한 14/14/14/14는 아니지만 여전히 균등에 가까움
Algorithm Duration: 초반 ~70μs에서 안정화 후 ~15μs로 감소
Error Rate: No data (에러 없음)
LC가 burst에서도 우수한 성능을 유지:
█ TOTAL RESULTS
checks_total.......: 102426 729.490639/s
checks_succeeded...: 100.00% 102426 out of 102426
checks_failed......: 0.00% 0 out of 102426
✓ status is 200
✓ response time < 1000ms
HTTP
http_req_duration..............: avg=253.21ms min=50.71ms med=301.06ms max=537.31ms p(90)=502.3ms p(95)=502.89ms
{ expected_response:true }...: avg=253.21ms min=50.71ms med=301.06ms max=537.31ms p(90)=502.3ms p(95)=502.89ms
http_req_failed................: 0.00% 0 out of 51213
http_reqs......................: 51213 364.74532/s
EXECUTION
iteration_duration.............: avg=353.52ms min=150.87ms med=401.22ms max=637.5ms p(90)=602.6ms p(95)=603.23ms
iterations.....................: 51213 364.74532/s
vus............................: 10 min=1 max=250
vus_max........................: 250 min=250 max=250
NETWORK
data_received..................: 7.7 MB 55 kB/s
data_sent......................: 5.5 MB 39 kB/s

서버 선택 비율: 대략 균등 (해시 분포)
서버별 P95 응답시간 (초)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0.0524 | 0.151 | 0.302 | 0.503 |
Active Connections (피크 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 6 | 26 | 53 | 90 |
→ RR(9/27/54/88)과 거의 동일. server-4에 90개로 전체 테스트 중 최악
Algorithm Duration: 초반 ~50μs에서 안정화 후 ~10μs
Error Rate: No data (에러 없음)
IP Hash는 burst에서도 RR과 동일한 패턴:
█ TOTAL RESULTS
checks_total.......: 102210 727.511259/s
checks_succeeded...: 100.00% 102210 out of 102210
checks_failed......: 0.00% 0 out of 102210
✓ status is 200
✓ response time < 1000ms
HTTP
http_req_duration..............: avg=253.92ms min=50.53ms med=301.28ms max=545.7ms p(90)=502.26ms p(95)=502.87ms
{ expected_response:true }...: avg=253.92ms min=50.53ms med=301.28ms max=545.7ms p(90)=502.26ms p(95)=502.87ms
http_req_failed................: 0.00% 0 out of 51105
http_reqs......................: 51105 363.75563/s
EXECUTION
iteration_duration.............: avg=354.22ms min=150.68ms med=401.47ms max=650.56ms p(90)=602.53ms p(95)=603.22ms
iterations.....................: 51105 363.75563/s
vus............................: 10 min=1 max=250
vus_max........................: 250 min=250 max=250
NETWORK
data_received..................: 7.7 MB 55 kB/s
data_sent......................: 5.5 MB 39 kB/s

처리량
응답시간
안정성
서버 선택 비율: 대략 균등 (해시 링 분포)
Active Connections (피크 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 8 | 32 | 58 | 83 |
Algorithm Duration: 초반 ~45μs에서 안정화 후 ~20μs
RR, IP Hash와 거의 동일한 결과. 해시 기반 균등 분배의 한계가 동일하게 나타남.
█ TOTAL RESULTS
checks_total.......: 230802 1648.251308/s
checks_succeeded...: 100.00% 230802 out of 230802
checks_failed......: 0.00% 0 out of 230802
✓ status is 200
✓ response time < 1000ms
HTTP
http_req_duration..............: avg=56.23ms min=50.49ms med=53.67ms max=359.51ms p(90)=60.13ms p(95)=65.52ms
{ expected_response:true }...: avg=56.23ms min=50.49ms med=53.67ms max=359.51ms p(90)=60.13ms p(95)=65.52ms
http_req_failed................: 0.00% 0 out of 115401
http_reqs......................: 115401 824.125654/s
EXECUTION
iteration_duration.............: avg=156.55ms min=150.67ms med=153.98ms max=459.7ms p(90)=160.6ms p(95)=165.86ms
iterations.....................: 115401 824.125654/s
vus............................: 10 min=1 max=250
vus_max........................: 250 min=250 max=250
NETWORK
data_received..................: 17 MB 123 kB/s
data_sent......................: 12 MB 88 kB/s

처리량
응답시간
안정성
서버 선택 비율: server-1 거의 100%, server-2, server-3 약간
Active Connections (피크 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 109 | 0 | 0 | 0 |
Algorithm Duration: 초반 ~200μs에서 안정화 후 ~50μs
흥미로운 점: server-2의 p95가 0.210초 — VU가 올라가면서 잠깐 server-2로 분산된 흔적
Steady보다 스노우볼 효과가 더 심해진 결과:
docker stop web-server-1 █ TOTAL RESULTS
checks_total.......: 82956 459.330197/s
checks_succeeded...: 99.57% 82607 out of 82956
checks_failed......: 0.42% 349 out of 82956
✗ status is 200
↳ 99% — ✓ 41133 / ✗ 345
✗ response time < 1000ms
↳ 99% — ✓ 41474 / ✗ 4
HTTP
http_req_duration..............: avg=297.94ms min=504µs med=303.28ms max=10s p(90)=505.71ms p(95)=507.46ms
{ expected_response:true }...: avg=299.45ms min=50.89ms med=303.33ms max=540.63ms p(90)=505.73ms p(95)=507.47ms
http_req_failed................: 0.83% 345 out of 41478
http_reqs......................: 41478 229.665098/s
EXECUTION
iteration_duration.............: avg=398.35ms min=100.65ms med=403.66ms max=10.1s p(90)=606.22ms p(95)=608.02ms
iterations.....................: 41478 229.665098/s
vus............................: 100 min=4 max=100
vus_max........................: 100 min=100 max=100
NETWORK
data_received..................: 6.2 MB 35 kB/s
data_sent......................: 4.4 MB 25 kB/s


처리량
응답시간
안정성
Server Health
서버 선택 비율 (Backend Selection Distribution)
서버별 P95 응답시간 (초)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 0.151 | 0.302 | 0.503 |
Active Connections (장애 후 안정화 시점)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 12 | 24 | 40 |
→ server-1 제외 후 3개 서버로 균등 분배. 느린 서버에 연결 쌓이는 패턴 동일
Error Rate
Algorithm Duration: 35μs (RR 특성상 일정)
server-1 장애의 영향이 명확히 드러난 결과:
█ TOTAL RESULTS
checks_total.......: 101396 561.458485/s
checks_succeeded...: 99.72% 101119 out of 101396
checks_failed......: 0.27% 277 out of 101396
✗ status is 200
↳ 99% — ✓ 50433 / ✗ 265
✗ response time < 1000ms
↳ 99% — ✓ 50686 / ✗ 12
HTTP
http_req_duration..............: avg=225.44ms min=418µs med=153.74ms max=10s p(90)=502.43ms p(95)=503.58ms
{ expected_response:true }...: avg=224.24ms min=50.61ms med=153.77ms max=611.47ms p(90)=502.43ms p(95)=503.58ms
http_req_failed................: 0.52% 265 out of 50698
http_reqs......................: 50698 280.729243/s
EXECUTION
iteration_duration.............: avg=325.84ms min=100.49ms med=254.21ms max=10.1s p(90)=602.81ms p(95)=604.12ms
iterations.....................: 50698 280.729243/s
vus............................: 100 min=4 max=100
vus_max........................: 100 min=100 max=100
NETWORK
data_received..................: 7.6 MB 42 kB/s
data_sent......................: 5.4 MB 30 kB/s


처리량
응답시간
안정성
Server Health: server-1: 0, server-2/3/4: 1
서버 선택 비율: 장애 후 server-2/3/4로 재분배 (가중치 3:2:1 비율)
Active Connections (장애 후 안정화)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 21 | 28 | 23 |
Error Rate: 장애 직후 ~4건/s 스파이크 후 감소
Algorithm Duration: 장애 직후 ~90μs 스파이크 → 안정화 후 ~30μs
WRR이 RR보다 장애 대응에서 더 큰 영향을 받은 결과:
█ TOTAL RESULTS
checks_total.......: 104250 577.60714/s
checks_succeeded...: 99.68% 103917 out of 104250
checks_failed......: 0.31% 333 out of 104250
✗ status is 200
↳ 99% — ✓ 51806 / ✗ 319
✗ response time < 1000ms
↳ 99% — ✓ 52111 / ✗ 14
HTTP
http_req_duration..............: avg=216.46ms min=337µs med=153.58ms max=10s p(90)=502.55ms p(95)=504.02ms
{ expected_response:true }...: avg=215.08ms min=50.66ms med=153.6ms max=626.02ms p(90)=502.55ms p(95)=504.02ms
http_req_failed................: 0.61% 319 out of 52125
http_reqs......................: 52125 288.80357/s
EXECUTION
iteration_duration.............: avg=316.86ms min=100.4ms med=254.06ms max=10.1s p(90)=602.94ms p(95)=604.62ms
iterations.....................: 52125 288.80357/s
vus............................: 100 min=4 max=100
vus_max........................: 100 min=100 max=100
NETWORK
data_received..................: 7.8 MB 43 kB/s
data_sent......................: 5.6 MB 31 kB/s


처리량
응답시간
안정성
Server Health: server-1: 0, server-2/3/4: 1
Active Connections (장애 후 안정화)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 17 | 18 | 27 |
→ 3개 서버 중에서도 상대적으로 균등 유지
Algorithm Duration: 장애 직후 ~22μs 스파이크 → 안정화 후 ~5μs
LC가 장애 후에도 균등 분산을 유지한 결과:
█ TOTAL RESULTS
checks_total.......: 82640 457.631821/s
checks_succeeded...: 99.99% 82637 out of 82640
checks_failed......: 0.00% 3 out of 82640
✗ status is 200
↳ 99% — ✓ 41317 / ✗ 3
✓ response time < 1000ms
HTTP
http_req_duration..............: avg=299.47ms min=1.86ms med=302.58ms max=560.73ms p(90)=503.89ms p(95)=505.16ms
{ expected_response:true }...: avg=299.49ms min=50.91ms med=302.58ms max=560.73ms p(90)=503.89ms p(95)=505.16ms
http_req_failed................: 0.00% 3 out of 41320
http_reqs......................: 41320 228.815911/s
EXECUTION
iteration_duration.............: avg=399.9ms min=102.27ms med=402.96ms max=661.15ms p(90)=604.46ms p(95)=605.75ms
iterations.....................: 41320 228.815911/s
vus............................: 100 min=4 max=100
vus_max........................: 100 min=100 max=100
NETWORK
data_received..................: 6.2 MB 34 kB/s
data_sent......................: 4.4 MB 25 kB/s


처리량
응답시간
안정성
Server Health: server-1: 0, server-2/3/4: 1
Active Connections (장애 후 안정화)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 12 | 25 | 41 |
→ 3개 서버로 균등 분배. RR과 유사한 패턴
Algorithm Duration: 장애 직후 ~80μs 스파이크 → 안정화 후 ~10μs
IP Hash가 장애 대응에서 가장 우수한 에러율을 기록:
ipServerMapping.compute()에서 캐시된 서버가 unhealthy면 즉시 재선택% 3으로 바뀌면서 기존 server-2/3/4 매핑도 일부 변경됨 (IP Hash의 단점) █ TOTAL RESULTS
checks_total.......: 82004 454.042868/s
checks_succeeded...: 99.81% 81852 out of 82004
checks_failed......: 0.18% 152 out of 82004
✗ status is 200
↳ 99% — ✓ 40852 / ✗ 150
✗ response time < 1000ms
↳ 99% — ✓ 41000 / ✗ 2
HTTP
http_req_duration..............: avg=302.49ms min=617µs med=302.61ms max=10s p(90)=503.92ms p(95)=505.16ms
{ expected_response:true }...: avg=303.1ms min=51.05ms med=302.63ms max=568.99ms p(90)=503.92ms p(95)=505.17ms
http_req_failed................: 0.36% 150 out of 41002
http_reqs......................: 41002 227.021434/s
EXECUTION
iteration_duration.............: avg=402.9ms min=100.72ms med=402.97ms max=10.1s p(90)=604.45ms p(95)=605.67ms
iterations.....................: 41002 227.021434/s
vus............................: 100 min=4 max=100
vus_max........................: 100 min=100 max=100
NETWORK
data_received..................: 6.2 MB 34 kB/s
data_sent......................: 4.4 MB 24 kB/s
처리량
응답시간
안정성
Server Health: server-1: 0, server-2/3/4: 1
Active Connections (장애 후 안정화)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 13 | 17 | 46 |
→ server-4에 쏠림. 해시 링에서 server-1의 가상 노드가 빠지면서 인접 서버(server-4)로 재배치
Algorithm Duration: 장애 직후 ~100μs 스파이크 → 안정화 후 ~30μs
Error Rate: 장애 직후 ~3건/s 피크 → 해시 링 재구성 후 감소
CH가 IP Hash보다 에러율이 높은 의외의 결과:
buildHashRing)이 필요해서 약간의 지연 발생needsRebuild() → rebuildIfNeeded() → buildHashRing() 과정에서 일시적으로 이전 링 사용% 3으로 바뀌면서 기존 매핑이 전부 깨짐 █ TOTAL RESULTS
checks_total.......: 152166 844.848188/s
checks_succeeded...: 99.98% 152143 out of 152166
checks_failed......: 0.01% 23 out of 152166
✗ status is 200
↳ 99% — ✓ 76060 / ✗ 23
✓ response time < 1000ms
HTTP
http_req_duration..............: avg=116.42ms min=17.77ms med=153.26ms max=519.3ms p(90)=156.87ms p(95)=158.39ms
{ expected_response:true }...: avg=116.45ms min=50.61ms med=153.26ms max=519.3ms p(90)=156.87ms p(95)=158.39ms
http_req_failed................: 0.03% 23 out of 76083
http_reqs......................: 76083 422.424094/s
EXECUTION
iteration_duration.............: avg=216.91ms min=118.96ms med=253.75ms max=620.6ms p(90)=257.41ms p(95)=258.9ms
iterations.....................: 76083 422.424094/s
vus............................: 100 min=4 max=100
vus_max........................: 100 min=100 max=100
NETWORK
data_received..................: 11 MB 63 kB/s
data_sent......................: 8.2 MB 45 kB/s
처리량
응답시간
안정성
Server Health: server-1: 0, server-2/3/4: 1
서버 선택 비율: 장애 전 server-1 거의 100% → 장애 후 server-2에 집중
Active Connections (장애 후)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 100 | 0 | 0 |
→ 스노우볼 효과가 server-2로 그대로 이동!
서버별 P95 응답시간 (초)
| server-1 | server-2 | server-3 | server-4 |
|---|---|---|---|
| 0 | 0.159 | 0.319 | 0 |
→ server-2(150ms)가 새로운 "가장 빠른 서버"로 트래픽 독점
Algorithm Duration: 60150μs
예상과 다른 결과 — LRT가 의외로 잘 동작한 것처럼 보이지만 근본 문제는 동일:
Burst와 Server Failure를 돌리고 나서 느낀 것들:
Burst에서 RR, IP Hash, CH는 사실상 동일했다. 셋 다 균등 분배 계열이라 트래픽이 늘어도 패턴이 변하지 않는다. 차이라면 server-4의 연결 누적 정도뿐이고, IP Hash가 burst 초반 캐시 저장 비용으로 오버헤드가 잠깐 치솟는 정도다.
WRR과 LC는 Burst에서도 Steady와 거의 동일한 avg를 유지했다. 부하가 올라가도 알고리즘 특성이 흔들리지 않았다. WRR은 가중치 비율대로 Active Connections도 스케일링됐고, LC는 여전히 균등에 가까운 연결 수를 보여줬다.
Server Failure에서 가장 인상적인 건 IP Hash였다. 에러 3건. 처음에는 의외였는데 이유를 보면 납득이 된다. compute()로 원자적으로 캐시 확인 + 재선택이 이루어지기 때문에 unhealthy 서버로 한 번 실패하면 즉시 캐시를 무효화하고 다른 서버를 선택한다. 헬스체크를 기다리지 않고 스스로 빠르게 우회한 것.
WRR은 서버 의존도가 높은 만큼 장애 충격도 컸다. server-1에 50% 보내는 전략이 정상 상황에서는 최적이지만, 그 서버가 죽으면 그만큼 충격도 크다. 가중치가 높은 서버일수록 단일 장애점이 된다는 점을 고려해야 한다.
Consistent Hashing의 Active Connections 불균등(13/17/46)은 이론과 실제의 차이를 보여준다. 이론적으로 최소 재배치를 보장하지만, "최소 재배치"가 "균등 재배치"를 의미하진 않는다. server-1의 150개 가상 노드가 빠지면서 그 구간을 담당하던 트래픽이 인접 서버(server-4)로 몰렸다. CH의 진짜 장점은 기존에 server-2/3/4에 매핑된 클라이언트는 서버가 바뀌지 않는다는 것인데, 이 테스트에서는 그 부분을 측정하지 못했다.
Least Response Time은 쏠림 현상이 단점이자 장점이었다. Steady에서는 server-1이 모든 연결을 독점하는 문제가 있었지만, Server Failure에서는 server-1이 죽자마자 "다음으로 빠른 서버"인 server-2로 즉시 전환해서 에러가 23건에 그쳤다. 응답시간 데이터를 실시간으로 보고 있기 때문에 적응도 빠르다. 다만 새로운 서버도 결국 독점 상태가 된다는 점은 변하지 않는다.
다음 편에서는 3가지 시나리오 전체 결과를 종합해서 알고리즘별 특성과 적합한 사용 환경을 정리한다.