문맥:
API를 제공하는 H 호스트 클러스터가 있습니다. 여기서 각 호스트는 P(상수) 수의 (파이썬이지만 관련성이 없는) 프로세스(비동기식이지만 그렇지 않으면 관련성이 없음)를 사용하여 API를 제공합니다.
다음 정보(그래프)에 액세스할 수 있습니다.
- 전체 클러스터에 대한 오래된(초당) 쿼리 수신자 수, R(t)
- 평균 대기 시간(요청을 처리하는 데 걸리는 시간) L= 이며
L(t)
, 이 역시 시간에 따라 달라집니다.- 평균은 초 이상이며 모든 프로세스/호스트에 걸쳐 있습니다.
H(t)
자동 확장으로 인해 시간이 지남에 따라 변경되는 호스트 수입니다 .
전체 프로세스와 프로세스 내의 모든 쿼리가 종료되는 오류가 발생할 수 있지만 나머지 프로세스는 계속 작동합니다.
- 오류율(예: 호스트당 일일 크래시 수)은 알려져 있고 일정합니다
E
.
문제: 충돌로 인해 실패한 쿼리의 (예상?) 수를 계산하고 싶습니다.
가정:
- 쿼리는 호스트와 프로세스 전반에 걸쳐 균등하게 균형을 이룹니다.
- 실패한 프로세스는 "즉시" 복구됩니다.
몇 가지 생각:
- 특정 초마다새로운쿼리는 이어야 합니다
R(t) / [P*H(t)]
. - 아직 완료되지 않은 "실행 중인" 쿼리는 고려되지 않습니다. 나는 이것을 어떻게든 L(t)와 연관시키고 싶다고 생각합니다...
- 초당 새 쿼리 수의 역수
[P*H(t)] / R(t)
는 보다 작아야 합니다L(t)
. 그렇지 않으면 새 쿼리를 받는 것보다 쿼리를 완료하는 데 더 많은 시간이 걸리고 결국 서버에 과부하가 발생한다는 의미입니다(이런 일은 발생하지 않습니다!).