
Ich habe zwei Server, die sich jeweils an zwei verschiedenen Standorten befinden. Auf einem Server muss ich eine Anwendung hosten und auf dem anderen den Datenbankserver.
Wenn ich vom App-Server aus den Datenbankserver anpinge, erhalte ich im Durchschnitt etwa 30 ms.
Meine Frage ist:
When I query the database from the app;
Wird es dauern
30 ms + database_server_query_run_time
Oder;
Wird es dauern
30 ms + database_server_query_run_time
+ 30 ms
Ich würde das bitte gerne verstehen.
Antwort1
Normalerweise sind mehr als diese beiden Optionen erforderlich.
Ping misst lediglich die Zeit vom Client zum Server und wieder zurück (rtt – Round Trip Time).
Normalerweise verwenden Datenbanken TCP, daher müssen Sie zuerst ein SYN-Paket senden, um den TCP-Handshake zu starten (zur Vereinfachung sagen wir 15 ms* + CPU-Zeit, dann erhalten Sie ein SYN/ACK (15 ms + CPU-Zeit), senden ein ACK und eine Anforderung zurück (mindestens 15 ms + CPU-Zeit), dann die Zeit, die die Datenbank zum Verarbeiten der Abfrage benötigt, und dann die Zeit (15 ms + CPU), um die Daten zurückzubekommen, und noch etwas mehr zum Bestätigen und Schließen der Verbindung.
Dabei wird natürlich die Authentifizierung (Benutzername/Passwort) gegenüber der Datenbank nicht mitgezählt und es erfolgt keine Verschlüsselung (SSL-Handshakes/DH oder was auch immer nötig ist).
*die Hälfte einer Hin- und Rückreisezeit, vorausgesetzt, die Hin- und Rückroute ist symmetrisch (die Hälfte der Zeit für den Hinweg und die Hälfte für den Rückweg ... die CPU-Verarbeitungszeit für die Ping-Antwort ist sehr kurz)
Antwort2
Die Ping-Zeit ist Hin- und Rückfahrt. Wenn Sie darüber nachdenken – wie könnte die Einwegzeit gemessen werden? Es dauert also 30 ms plus die Abfragezeit.
Antwort3
Die Ping-Zeit würde alle drei zusammen darstellen, d. h. sie würde die Zeit von der App zum Datenbankserver, die Zeit bis zur Ausführung der Datenbankabfrage (da sie nach Abschluss der Abfrage den Zeitstempel für die Antwort erstellt) und die Zeit für die Hin- und Rückübertragung zum App-Server umfassen.
Kurz gesagt ist Ping die gesamte Hin- und Rückreisezeit vom Senden eines Pakets bis zum Eintreffen der Antwort.
Der „Ping“ eines Dienstes wird normalerweise als Durchschnitt mehrerer Pings gemessen. Ein Ping kann also ein einzelnes gesendetes Paket bedeuten oder sich auf den Durchschnittswert aller Roundtrip-Zeiten beziehen. Wenn Sie also den Roundtrip-Zeitwert des Pings aus den letzten 100 Paketen nehmen und dieser zusammen durchschnittlich 30 ms beträgt, würden Sie sagen: „Der Ping beträgt 30 ms.“