L = λ × W
용량 계획의 가장 유용한 방정식
어떤 안정된 큐에도 적용되며: L = λ × W, 여기서:
- L = 시스템 내의 평균 항목 수(진행 중 또는 대기 중)
- λ (lambda) = 평균 도착률(단위 시간당 항목)
- W = 각 항목이 시스템에 있는 평균 시간
기하학적 읽기: λ를 하나의 축에, W를 다른 축에 그리면 그들은 사각형의 면적을 생성합니다. 용량 계획은 이 사각형 내부에 있습니다.
왜 중요한가: 세 가지 수량 중 두 가지를 측정하면 세 번째를 알 수 있습니다. 통과량과 지연 시간을 측정하면 점유율을 알 수 있고, 통과량과 점유율을 측정하면 지연 시간을 알 수 있습니다. 이 법칙은 웹 요청, 레스토랑 테이블, 슈퍼마켓 대기열, CPU 파이프라인에 적용되며 변경 없이 사용할 수 있습니다.
세 가지 구체적인 예시:
- 웹 서비스는 200 req/s를 처리하며 평균 지연 시간이 50 ms(0.05 s)입니다. L = 200 × 0.05 = 10개가 진행 중입니다.
- 커피숍은 60명 고객/시간을 처리하며 평균 체류 시간이 15분(0.25시간)입니다. L = 60 × 0.25 = 15명이 내부에 있습니다.
- 백엔드 풀은 1500 req/s를 처리하며 평균 지연 시간이 200 ms(0.2 s)입니다. L = 1500 × 0.2 = 300개가 진행 중입니다.
사이징 인용: 티어의 작업자 수/스레드 수/연결 수는 L보다 적어야 합니다. 더 적으면 큐 성장입니다.
지연 시간이 80% 활용률을 넘어서 폭발하는 이유
운영에서 가장 중요한 곡선
x 축에 이용률(0%에서 100%)을, y 축에 평균 대기 시간을 표시합니다. 용량 계획에서 가장 중요한 곡선 중 하나입니다.
M/M/1 큐잉 모델: 포아송 도착(난수)과 지수 서비스 시간(난수)이 있는 시스템의 평균 대기 시간:
W_q = ρ / (μ × (1 - ρ))
여기 ρ는 이용률(0에서 1)이고, μ는 서비스율입니다.
곡선의 모양:
- ρ = 0.5(50% util)에서 대기 시간은 작습니다(1 서비스 시간).
- ρ = 0.7(70% util)에서 대기 시간은 ~2.3 서비스 시간입니다.
- ρ = 0.8(80% util)에서 대기 시간은 ~4 서비스 시간입니다.
- ρ = 0.9(90% util)에서 대기 시간은 ~9 서비스 시간입니다.
- ρ = 0.95(95% util)에서 대기 시간은 ~19 서비스 시간입니다.
- ρ = 1.0(100% util)에서 대기 시간은 무한합니다.
무릎: 80% 이용률 근처에서 곡선이 급격히 굽게 됩니다. 무릎 아래에서는 용량이 편안합니다; 무릎 위에서는 이용률이 더 빠르게 증가하는 것보다 대기 시간이 더 빠르게 증가합니다.
실제 사용자 관점: 70% 이용률을 지속 상태에 사용하고, 100%를 사용하지 마십시오. 30%의 '허공'은 낭비가 아니라 유한한 대기 시간의 가격입니다.
무릎을 넘어 가는 용량 조정
두 가지 시나리오가 있습니다:
시나리오 A: 10개의 복제본이 60% CPU를 사용하고 있습니다. 대기 시간 p99 = 100 ms입니다.
시나리오 B: 같은 클러스터가 트래픽 증가로 인해 90% CPU를 사용하고 있습니다. p99 = 600 ms입니다.
같은 클러스터, 같은 코드, 이용률만 변경되었습니다.
용량 및 트리거를 함께 조정합니다
통합
지금은 Little's 법칙을 직사각형으로 적용할 수 있으며, 대기열 곡선과 무릎을 읽고 두 가지를 용량 결정에 연결할 수 있습니다.
두 가지 모두 적용합니다.
백엔드 계층은 평균 레이턴시 50ms, 복제본 용량 80 req/s, 70% CPU 사용률로 2,000 req/s를 처리합니다. 2배의 급증 요인; 3개의 동시 복제본 실패를 견디고 싶습니다.
보조 주석
보조 주석
이 기하학 수업은 Stateless Horizontal Scaling 주 수업을 양적 기하학으로 재해석합니다.
다음 보조 주석, geometry_of_ingress_egress_separation,는 네트워크 경계를 분할하는 것을 이분 그래프로 재해석하고, 분할이 제거하는 쪼개기 정점이 있는 것으로 표현합니다.
잘 했어요.