Wie viele Abfragen schlagen fehl, wenn innerhalb eines einzelnen Prozesses eines einzelnen Hosts ein Fehler auftritt?

Wie viele Abfragen schlagen fehl, wenn innerhalb eines einzelnen Prozesses eines einzelnen Hosts ein Fehler auftritt?

Kontext:

Ich habe einen Cluster von H-Hosts, die eine API bereitstellen, wobei jeder Host die API mithilfe einer (konstanten) Anzahl von (Python-, aber irrelevanten) Prozessen bereitstellt (asynchron, aber ansonsten auch irrelevant).

Ich habe Zugriff auf folgende Informationen (als Grafiken):

  • die durchschnittliche (pro Sekunde) Anzahl der Anfragen des gesamten Clusters, R(t)
  • Die mittlere Latenz (Zeit, die zum Verarbeiten einer Anfrage benötigt wird) L= L(t), die ebenfalls mit der Zeit variiert.
    • Der Mittelwert liegt über Sekunden und über alle Prozesse/Hosts hinweg
  • Die Anzahl der Hosts H(t), die sich aufgrund der automatischen Skalierung im Laufe der Zeit ändert.

Es kann ein Fehler auftreten, der einen gesamten Prozess und alle darin enthaltenen In-Process-Abfragen beendet, die verbleibenden Prozesse jedoch weiter funktionieren.

  • Die Fehlerrate (z. B. in #Abstürzen pro Tag pro Host) ist bekannt und konstant, sagen wir E.

Problem: Ich möchte die (erwartete?) Anzahl der fehlgeschlagenen Abfragen infolge eines Absturzes berechnen.

Annahmen:

  • Die Abfragen werden gleichmäßig auf Hosts und Prozesse verteilt.
  • Ein fehlgeschlagener Prozess wird „sofort“ wiederhergestellt

Einige Gedanken:

  • Zu jeder Sekunde beträgt die Anzahl derneuAbfragen sollten sein R(t) / [P*H(t)].
  • Dabei werden die noch nicht abgeschlossenen „laufenden“ Abfragen nicht berücksichtigt. Ich denke, ich möchte dies irgendwie mit L(t) in Verbindung bringen ...
  • Der Kehrwert der Anzahl neuer Abfragen pro Sekunde, [P*H(t)] / R(t), sollte kleiner als sein L(t), da es sonst bedeuten würde, dass das Abschließen einer Abfrage länger dauert als das Empfangen einer neuen, was letztendlich zu einer Überlastung der Server führen würde (was nicht passiert!).

verwandte Informationen