용량 추정기

서버가 실제로 몇 대나 필요할까요? 느낌이 아니라 산수로 답하세요. 추정기에 요청 속도, 각 요청이 태우는 CPU 시간, 사용자가 보는 응답 시간을 주면, 트래픽이 바쁘게 유지하는 코어, 이중화 정책이 적용된 상태로 프로비저닝할 전체 서버, 연결 풀이 견뎌야 할 동시 처리 수, 그리고 같은 서비스가 트래픽 2배, 5배, 10배가 됐을 때의 모습을 돌려줍니다.

공식을 쉬운 말로

코어. 요청 속도에 각 요청이 소비하는 CPU 초를 곱하세요. 그것이 트래픽이 100%에서 바쁘게 유지하는 코어 수입니다. 그런 다음 목표 사용률로 나누세요. 70%에서는 프로비저닝하는 각 코어가 계획상 0.7 코어로만 계산되고, 나머지 0.3은 트래픽이 흔들릴 때 대기열을 짧게 유지하는 여유입니다. 필요한 코어 = 요청/초 × 요청당 CPU 초 ÷ 목표 사용률.

서버. 코어를 서버당 코어로 나누고 올림하세요. 서버 0.4대라는 것은 존재하지 않으며, 내림은 평균적으로 작동하는 계획이 피크에서 실패하는 방식입니다. 이중화는 그다음에 적용됩니다. N+1은 올림한 수에 예비 서버 1대를 더하고, 2N은 전체 플릿을 두 배로 합니다. 동시 처리 수는 Little's law에서 오는 별개의 숫자입니다. 처리 중인 요청 = 요청/초 × 초 단위 응답 시간. 이것은 스레드 풀, 데이터베이스 연결, 파일 설명자의 크기를 정합니다. CPU가 아직 놀고 있을 때 서비스가 실제로 부딪히는 한계입니다. 응답 크기를 주면 송신량은 요청/초 × 크기 × 8이며, 네트워크 요금을 구성하는 비트입니다. 동반 기사인 서버가 실제로 몇 대 필요한가는 각 입력이 어디에서 오는지, 그리고 공급업체 벤치마크가 왜 이 모든 것과 어긋나는지 설명합니다.

계획 형제 도구: SLA 오류 예산 계산기는 이 용량이 지키는 가용성 목표를 분으로 바꾸고, 백업 보존 계산기는 같은 시스템의 스토리지 쪽 크기를 정합니다.

자주 묻는 질문

왜 100%가 아니라 70% 사용률로 계획하나요?

대기열은 포화 지점이 아니라 그 전에 폭발하기 때문입니다. 평균 95% 바쁜 CPU는 트래픽이 흔들릴 때마다 대기열이 한없이 자라는 CPU이고, 트래픽은 항상 흔들립니다. 사용률 목표는 피크, 배포, 재시도, 그리고 느린 의존성 하나를 흡수하는 여유입니다. 70%는 지연에 민감한 서비스의 업계 기본값이며, 지연을 견딜 수 있는 배치 워커는 더 뜨겁게 돌릴 수 있고, 사용자를 상대하고 뾰족한 것은 무엇이든 더 차갑게 돌려야 합니다.

코어와 처리 중인 요청의 차이는 무엇인가요?

서로 다른 질문에 답합니다. 코어는 CPU 서비스 시간에서 옵니다. 각 요청이 프로세서를 얼마나 소비하는지입니다. 처리 중인 요청은 Little's law에서 옵니다. 속도에 응답 시간을 곱한 것으로, 프로세서 부하가 아니라 동시 처리 수, 즉 연결, 스레드, 열린 채로 유지되는 메모리를 측정합니다. 하위 호출이 느린 서비스는 코어 2개를 쓰면서 500개의 요청을 처리 중으로 유지할 수 있으며, CPU가 바닥나기 훨씬 전에 연결 풀이 바닥납니다. 둘 다 크기를 정하세요. 무시한 쪽이 장애가 됩니다.

부하 테스트에서는 서버 1대가 초당 2,000개의 요청을 처리한다고 합니다. 왜 이 추정기는 동의하지 않나요?

부하 테스트는 보통 너그러운 클라이언트로부터 한 가지 요청 형태에 답하는, 따뜻하고 안정적이며 캐시가 뜨거운 서비스를 측정합니다. 프로덕션은 콜드 스타트, TLS 핸드셰이크, 재시도, 느린 요청의 긴 꼬리, 시끄러운 이웃, 그리고 10분 동안 용량을 절반으로 만드는 배포를 더합니다. 이 추정기는 의도적으로 보수적입니다. 평균 CPU 시간, 사용률 상한, 전체 서버, 이중화 추가. 부하 테스트는 가능성의 천장으로, 이 숫자는 프로비저닝할 바닥으로 취급하세요. 계획에서의 진실은 바닥입니다.

N+1은 실제로 무엇으로부터 보호하나요?

한 번의 장애로부터입니다. 죽은 호스트, 로테이션에서 빠진 잘못된 배포, 단일 인스턴스를 가져가는 가용성 영역 이벤트. N+1이 있으면 남은 N대의 서버가 여전히 목표를 충족합니다. 먼저 트래픽에서 N의 크기를 정하고 그다음에 예비를 더하는 이유가 바로 그것입니다. 2N은 다른 약속입니다. 보통 리전을 넘나드는 두 개의 완전한 복사본으로, 복사본 전체를 잃어도 살아남아야 하는 서비스를 위한 것입니다. 요금이 두 배가 되므로, 그 부재가 헤드라인으로 측정되는 서비스를 위해 삽니다.

요청당 CPU 서비스 시간은 어떻게 얻나요?

추측하지 말고 측정하세요. 실행 중인 서비스에서는 일정 구간 동안 소비된 총 CPU 초를 같은 구간에 처리한 요청 수로 나눕니다. 애플리케이션 성능 모니터링 도구는 요청당 CPU로 직접 보고합니다. Linux에서는 /proc의 프로세스 CPU 시간이나 컨테이너 메트릭에서 도출할 수 있습니다. 하루 평균이 아니라 현실적으로 가장 바쁜 1시간의 숫자를 사용하세요. 평균으로 계획한 용량은 바로 그 용량을 산 목적인 피크에서 실패합니다.