두 곳 중 덜 바쁜 쪽(최대 부하) 계산기
무작위로 한 대를 고르면 최대 부하가 평균보다 √(2λ·ln m)만큼 무거운데, 두 대를 뽑아 덜 바쁜 쪽에 보내면 ln ln m / ln d로 지수적으로 줄어듭니다. 실제로 공을 던져 보는 시뮬레이션과 나란히 놓아 그 차이를 확인할 수 있습니다.
1이면 그냥 무작위로 한 대를 고르는 것입니다.
후보를 2개 볼 때 가장 바쁜 서버
102.8개
평균 100개보다 2.79개 많을 뿐입니다. 무작위로 한 대만 고르면 37.2개가 초과되므로 13.3배 차이입니다.
시뮬레이션은 실제로 공을 던져 본 것이며 12판의 평균입니다. 화면에서 돌리는 것이라 요청 수를 10만 개까지만 써서 돌립니다 — 어림식 쪽은 넣은 값 그대로 입니다. 씨앗을 고정해 같은 입력이면 같은 값이 나옵니다.
한 판의 서버별 부하 (앞 40대)
후보를 둘 이상 보면 막대가 거의 평평해집니다. 무작위성은 그대로인데 비교 하나가 들어갔을 뿐입니다.
후보 수를 늘려 가며
| 후보 d | 초과분 | 최대 부하 | 하나 더 봐서 준 몫 |
|---|---|---|---|
| 1개 | 37.169 | 137.17 | — |
| 2개 | 2.788 | 102.79 | 34.381 |
| 3개 | 1.759 | 101.76 | 1.029 |
| 4개 | 1.394 | 101.39 | 0.365 |
| 5개 | 1.201 | 101.2 | 0.193 |
| 6개 | 1.079 | 101.08 | 0.122 |
1 → 2의 이득이 압도적이고 그 뒤로는 급격히 줄어듭니다. 초과분이 ln d에 반비례하기 때문입니다 — 2에서 4로 늘려야 겨우 절반이 되는데, 그러려면 부하를 읽는 왕복이 두 번 더 늘어납니다. 「둘이면 충분하다」는 말은 여기서 나옵니다.
요청이 늘어나면 (서버 1000대 고정)
| 요청 수 | 평균 부하 | 후보 1개 초과분 | 후보 2개 초과분 |
|---|---|---|---|
| 1,000 | 1 | 3.7 | 2.788 |
| 10,000 | 10 | 11.8 | 2.788 |
| 100,000 | 100 | 37.2 | 2.788 |
| 1,000,000 | 1,000 | 117.5 | 2.788 |
| 10,000,000 | 10,000 | 371.7 | 2.788 |
오른쪽 열이 전혀 변하지 않는 것이 이 결과의 전부입니다. 후보를 둘 이상 보면 초과분에 요청 수 n이 아예 들어가지 않습니다. 요청을 만 배로 늘려도 가장 바쁜 서버는 평균보다 여전히 같은 개수만큼 무겁습니다. 왼쪽 열은 √n에 비례해 계속 늘어납니다.
사용 방법
- 1요청 수와 서버 수를 넣습니다.
- 2후보를 몇 개 볼지(d) 정합니다. 1이면 그냥 무작위로 한 대를 고르는 것입니다.
- 3어림식이 준 초과분과 실제로 던져 본 시뮬레이션 결과를 대조합니다.
- 4후보 수를 늘려 가는 표에서 1 → 2의 이득이 압도적인 것을 확인합니다.
- 5요청을 늘리는 표에서 후보 2개 쪽 초과분이 전혀 변하지 않는 것을 봅니다.
자주 묻는 질문
지수적으로 좋아집니다. 무작위로 한 대를 고르면 최대 부하가 평균보다 √(2·(n/m)·ln m)만큼 무거운데, 두 대를 뽑아 덜 바쁜 쪽에 보내면 그 초과분이 ln ln m / ln d가 됩니다. 서버 1000대에 요청 10만 건이면 37개에서 2.8개로 줄어듭니다.
초과분에서 요청 수 n이 아예 사라지기 때문입니다. 후보를 하나만 보면 요청이 늘수록 초과분이 √n으로 늘어나는데, 둘 이상 보면 요청을 만 배로 늘려도 초과분이 그대로입니다. 규모가 커질수록 이득이 커지는 셈입니다.
거의 나아지지 않습니다. 초과분이 ln d에 반비례하므로 2에서 3으로 가면 0.63배, 4로 가면 0.5배입니다. 반면 후보를 하나 더 볼 때마다 부하를 읽는 왕복이 하나씩 늘어납니다. 1 → 2는 지수적 개선이고 2 → 3은 상수 개선이라 실무에서는 둘로 끝냅니다.
오히려 나쁠 수 있습니다. 여러 로드밸런서가 같은 부하 정보를 보고 동시에 「가장 한가한 서버」로 몰리면 그 서버가 순식간에 밀립니다. 후보 둘 중 덜 바쁜 쪽을 고르면 몰림이 흩어져 그런 진동이 생기지 않습니다.
그쪽이 이 도구의 출발점입니다. 「해시로 고르게 뿌렸을 때」의 불균형이 곧 후보를 하나만 보는 경우이며, 이 도구는 거기에 비교 하나를 더했을 때 무엇이 달라지는지를 봅니다.
이론만큼은 아닙니다. 부하 정보가 오래되었거나(방금 보낸 요청이 아직 반영되지 않음) 읽는 비용이 있기 때문입니다. 그래도 무작위로 한 곳만 고르는 것보다 나은 것은 분명해서, 후보 둘 중 연결이 적은 쪽으로 보내는 방식이 널리 쓰입니다.
개수를 세는 것만으로는 부족합니다. 그때는 처리 중인 연결 수나 응답시간처럼 실제 부하를 재서 비교해야 하며, 그것이 최소연결 방식입니다. 이 도구는 요청마다 무게가 같다고 보고 계산합니다.
전송되지 않습니다. 계산과 시뮬레이션 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- 어림식은 상수항을 뺀 값입니다. 서버가 적거나 서버당 요청이 아주 적으면 상수항이 지배해 시뮬레이션과 벌어집니다.
- 요청마다 무게가 같다고 봅니다. 무게가 크게 다르면 개수가 아니라 실제 부하를 비교해야 합니다.
- 부하 정보가 즉시 정확히 읽힌다고 봅니다. 실제로는 정보가 오래되어 이론만큼 나오지 않습니다.
- 화면의 시뮬레이션은 요청 수를 10만 개까지만 써서 돌립니다. 어림식 쪽은 넣은 값 그대로입니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.