함정 질문창구가 아직 꽉 차지도 않았는데, 왜 손님들은 줄에서 오래 기다리게 될까요?
0.0초 · 줄 0명 · 응대 중 0곳 · 완료 0명 — 아직 아무도 오지 않았습니다
문장 따라가기
1/47서버가 바쁘면 왜 요청이 밀릴까요?
텍스트 모드에서는 3초마다 다음 문장으로 넘어갑니다.
창구는 하나이고, 손님 한 명을 처리하는 데 6초가 걸립니다. 그러니 1분에 열 명까지는 받을 수 있습니다.
실제로 오는 손님은 1분에 아홉 명입니다. 한 명 분의 여유가 남으니 창구는 열 번 중 아홉 번 바쁩니다 — 이것을 이용률 90%라고 부릅니다.
그런데 손님은 시계처럼 규칙적으로 오지 않습니다. 어떤 1분에는 열두 명이 몰리고 어떤 1분에는 여섯 명만 옵니다. 몰린 순간 생긴 줄은, 남은 여유가 10%뿐이니 좀처럼 사라지지 않습니다.
위 화면에서 이용률을 50에서 90으로 올려 보세요. 창구 수도 처리 시간도 그대로인데 줄만 길어집니다.
실측 · 지금 계산됨
이용률 90%로 길게 돌려 보면, 손님 한 명이 줄에서 기다린 시간은 평균 57.0초입니다. 처리에 걸리는 6초의 9.5배를, 아무 일도 하지 않고 서서 보낸 셈입니다.
이용률만 바꿔 같은 시뮬을 네 번 돌리면 기다림은 이렇게 갑니다 — 50%에서 1.0배, 80%에서 3.8배, 90%에서 9.5배, 95%에서 21.6배. 손님을 5% 남짓 더 받았을 뿐인데 기다리는 시간은 두 배가 넘습니다.
줄 길이도 같이 갑니다. 가장 길었을 때 이용률 50%에서는 15명, 90%에서는 81명이 서 있었습니다(위 그림은 그 긴 실행 중 보통의 5분이라, 그 5분만 보면 줄은 이보다 훨씬 짧습니다). 창구는 한 번도 고장 나지 않았고, 처리 속도도 그대로였습니다.
이 곡선에는 이름이 있습니다 — 창구 하나짜리 대기행렬(M/M/1)의 대기 공식입니다. 기다림 = 처리 시간 × 이용률 ÷ (1 − 이용률) — 50·80·90·95%면 각각 1배, 4배, 9배, 19배이고, 손님이 몰려서 오고 한 명당 처리 시간도 제각각일 때 들어맞습니다. 위 실측이 이 선을 따라갑니다 — 서버 사용률을 100%까지 쥐어짜면 안 되는 이유가 여기 있습니다.
이 숫자는 문구에 박아둔 값이 아니라, 이 화면을 그릴 때 시뮬을 돌려 나온 값입니다.
한 문장으로
줄이 길어지는 이유는 창구가 느려서가 아니라, 손님이 몰려서 오는데 창구에 남은 여유가 없기 때문입니다.
진도는 이 브라우저에만 저장됩니다 (계정·기기 간 동기화 없음).
1.이용률이 90%인 창구에서 대기 시간이 급격히 길어지는 이유는?
2.이용률을 90%에서 95%로 올리면 평균 대기 시간은?
3.줄이 길어질 때 가장 먼저 확인할 것은?