리틀의 법칙·처리량 계산기 쉽게 이해하기 — 개념과 원리
리틀의 법칙은 일이 들어와 기다리거나 처리된 뒤 빠져나가는 모든 안정된 시스템을 세 가지 수로 묶어 줍니다. 시스템 안에 있는 양, 흐르는 속도, 각 항목이 머무는 시간입니다. 소프트웨어에서는 서비스가 동시에 몇 개의 요청을 들고 있는지, 커넥션 풀이나 스레드 풀을 얼마나 크게 잡아야 하는지, 주어진 처리량이 하루에 몇 건이 되는지를 계산할 때 씁니다.
계산 방법
- 동시 처리 수 L = 처리량 λ(요청/초) × 평균 지연 시간 W(초)입니다. 밀리초로 입력한 지연 시간은 1,000으로 나눕니다.
- 하루 요청 수 = λ × 86,400(하루의 초)입니다.
원리
L = λW는 1961년 존 리틀이 증명한 식입니다. 들어오는 양과 나가는 양이 같은 시스템이라면 도착 간격이나 처리 시간이 어떤 분포를 따르든, 특정 대기행렬 모형을 가정하지 않아도 장기 평균에 대해 성립합니다. 직관적으로는 이렇습니다. 가게에 1분에 10명이 들어오고 한 사람이 6분씩 머문다면 가게 안에는 평균 60명이 있어야 합니다. 식을 바꾸면 처리량 = 동시 처리 수 ÷ 지연 시간이 되므로, 작업자 수가 고정되어 있다면 요청 하나를 더 빨리 끝내야만 초당 처리량을 늘릴 수 있습니다.
예제 풀이
- 입력값은 λ = 500 요청/초, W = 120 ms입니다.
- 지연 시간을 초로 바꾸면 120 ÷ 1,000 = 0.12초입니다.
- 동시 처리 수는 500 × 0.12 = 60건입니다.
- 하루 요청 수는 500 × 86,400 = 43,200,000건입니다.
| 처리량 (요청/s) | 동시 처리 중인 요청 수 |
|---|---|
| 125 | 15 |
| 250 | 30 |
| 375 | 45 |
| 500 | 60 |
| 625 | 75 |
| 750 | 90 |
| 1,000 | 120 |
결과 해석
L은 최댓값이 아니라 평균입니다. 순간적인 트래픽 몰림이나 지연 급증이 생기면 실제 수치는 더 올라가므로, 스레드·DB 커넥션·워커 수는 이보다 넉넉하게 잡아야 합니다. 처리량이 같아도 지연 시간이 두 배가 되면 동시 처리 수도 두 배가 되며, 과부하 서비스가 커넥션을 다 써 버리는 흔한 원인이 이것입니다. 반대로 풀 크기가 N으로 제한되어 있다면 유지할 수 있는 최대 처리량은 N ÷ W입니다.
흔한 실수
- 평균 처리량에 p99 같은 상위 지연 시간을 섞어 쓰는 경우(법칙은 평균끼리의 관계입니다)
- 밀리초와 초당 요청 수처럼 단위를 섞는 경우
- 대기열이 계속 쌓이는 불안정한 상태에 적용하는 경우
- 시간대별 편차가 큰데 하루 총량을 설계 부하로 쓰는 경우
자주 묻는 질문
초당 500건, 120 ms라면 스레드가 몇 개 필요한가요?
평균 60개가 바쁘게 일하므로, 순간 부하와 느린 요청을 고려해 여유를 더하고 I/O 대기 여부도 확인하십시오.
대기열에만 쓰는 법칙인가요?
아닙니다. 대기열, 서버 한 대, 데이터센터 전체, 물류 창고 재고처럼 경계를 어디에 긋든 적용됩니다.
지연 시간을 추정하는 데도 쓸 수 있나요?
그렇습니다. 평균 동시 처리 수와 처리량을 측정하면 W = L ÷ λ로 구할 수 있습니다.
출처: J. D. C. Little, A Proof for the Queuing Formula: L = λW, Operations Research 9(3), 1961 · L. Kleinrock, Queueing Systems, Volume 1: Theory, Wiley, 1975