Контекст:
У меня есть кластер из H хостов, обслуживающих API, где каждый хост обслуживает API, используя P (постоянное) количество (Python, но не имеет значения) процессов (асинхронно, но в остальном также не имеет значения).
У меня есть доступ к следующей информации (в виде графиков):
- усредненное (в секунду) количество запросов получателя по всему кластеру, R(t)
- Средняя задержка (время, необходимое для обработки запроса) L=
L(t)
, которая также меняется со временем.- среднее значение за секунды и по всем процессам/хостам
- Количество хостов
H(t)
, которое со временем меняется из-за автоматического масштабирования.
Может произойти ошибка, которая завершит весь процесс и все внутрипроцессные запросы, но оставшиеся процессы продолжат работать.
- Частота ошибок (например, количество сбоев в день на хост) известна и постоянна, например
E
.
Проблема: Я хочу вычислить (ожидаемое?) количество неудачных запросов в результате сбоя.
Предположения:
- запросы равномерно распределены по хостам и процессам.
- неудавшийся процесс восстанавливается «немедленно»
Некоторые мысли:
- В любую секунду числоновыйзапросы должны быть
R(t) / [P*H(t)]
. - Это не учитывает "запущенные" запросы, которые еще не завершены. Я думаю, что я хочу как-то связать это с L(t)...
- Обратное число новых запросов в секунду,
[P*H(t)] / R(t)
, должно быть меньшеL(t)
, так как в противном случае это означало бы, что выполнение запроса занимало бы больше времени, чем получение нового, что в конечном итоге приводило бы к перегрузке серверов (чего не происходит!)