14 Stimmen

Datenbank-Netzwerk-Latenzzeit

Ich arbeite derzeit an einem n-Tier-System und kämpfe mit einigen Problemen der Datenbankleistung. Ein Bereich, den wir untersucht haben, ist die Latenzzeit zwischen dem Datenbankserver und dem Anwendungsserver. In unserer Testumgebung sind die In unserer Testumgebung liegen die durchschnittlichen Ping-Zeiten zwischen den beiden Boxen im Bereich von 0,2 ms, auf der Kundenseite jedoch eher im Bereich von 8,2 ms. Ist das etwas, worüber wir uns Sorgen machen sollten?

Was haltet ihr für euer durchschnittliches System für eine akzeptable Latenz und wie würdet ihr die Latenz testen/messen?

Karl

14voto

Bob Thule Punkte 671

Entschuldigung für die sehr unzeitige Antwort, aber ich stolperte über diese Frage, als ich nach Metriken für die Netzwerklatenzen suchte, die andere zwischen ihrem Anwendungsserver und dem Datenbankserver erreichten. Wie auch immer, ich habe festgestellt, dass die anderen Antworten

Kurz gesagt: Ja, die Netzwerklatenz (gemessen durch Ping) kann einen großen Unterschied ausmachen.

Wenn die Antwortzeit Ihrer Datenbank 0,001 ms beträgt, dann werden Sie eine enorme Auswirkung sehen, wenn Sie von einem 0,2 ms- auf einen 8 ms-Ping wechseln. Ich habe gehört, dass Datenbankprotokolle gesprächig sind, was, wenn es wahr ist, bedeutet, dass sie mehr durch langsame Netzwerklatenz im Vergleich zu http beeinträchtigt werden würden.

Und mehr als wahrscheinlich, wenn Sie 1 Abfrage ausführen, dann 8ms hinzufügen, um die Antwort von der Datenbank zu erhalten wird keine Rolle. Wenn Sie jedoch 10.000 Abfragen ausführen, was in der Regel bei schlechtem Code oder nicht optimierter Verwendung eines ORM der Fall ist, müssen Sie 80 Sekunden länger auf einen Ping von 8 ms warten, während Sie bei einem Ping von 0,2 ms nur 4 Sekunden warten würden.

Ich selbst lasse niemals zu, dass Kundenanwendungen direkt mit der Datenbank in Kontakt treten. Ich verlange, dass Client-Anwendungen immer über einen Anwendungsserver (z. B. einen REST-Webdienst) laufen. Wenn ich auf diese Weise versehentlich ein "1+N"-ORM-Problem habe, hat das nicht annähernd so große Auswirkungen. Ich würde trotzdem versuchen, das zugrunde liegende Problem zu beheben...

0 Stimmen

Wieder Wiederbelebung eines alten Threads, aber auch ich stolperte über dieses Thema. Ich stimme zu, dass die Überwachung der rtt-Latenzzeit von Datenbanken aufgrund der Gesprächigkeit der Datenbankaktivität wichtig ist. Das Tool, das mein Unternehmen anbietet (www.heimdalldata), verfügt neben vielen anderen Funktionen über einen einfach zu bedienenden Mechanismus, der einer Abfrage einen bestimmten Betrag an Latenz hinzufügt, so dass die Auswirkungen auf die Anwendung gemessen werden können. Darüber hinaus hilft es, redundante Abfragen zu erkennen, und ermöglicht durch Regeln die Konfiguration des Caching auf Abfrage- oder Tabellenebene. Die schnellen Abfragen sind diejenigen, die die Anwendung nie verlassen!

0 Stimmen

Ich bin darauf gestoßen, weil ich wissen wollte, wie langsam ein Dienst ist, auf den wir bei der Arbeit angewiesen sind. Die Latenzzeit beträgt etwa 50 ms, es ist verrückt, dass du 8 ms als langsames Beispiel nennst, lol.

12voto

Brann Punkte 30431

Kurz gesagt: Nein!

Was Sie überwachen sollten, ist die Gesamtleistung Ihrer Abfragen (d.h. Transport zur DB + Ausführung + Rücktransport zu Ihrem Server)

Sie könnten einen Leistungszähler verwenden, um die Zeit zu überwachen, die Ihre Abfragen normalerweise zur Ausführung benötigen. Sie werden wahrscheinlich feststellen, dass Ihre Ergebnisse im Millisekundenbereich liegen.

So etwas wie eine "angemessene Latenz" gibt es nicht. Sie sollten vielmehr die "Angemessene Latenz für Ihr Projekt" in Betracht ziehen, die je nach dem, woran Sie arbeiten, sehr unterschiedlich sein kann. Die Leute haben nicht dieselben Erwartungen an eine Echtzeit-Handelsplattform und an eine nur lesende Amateur-Website.

0 Stimmen

Auch dafür gibt es in SQL integrierte Funktionen. Legen Sie jedoch keinen Filter von 1 ms fest, sonst werden die schneller ausgeführten Operationen nicht angezeigt.

6voto

Hamish Currie Punkte 461

Auf einem linuxbasierten Server können Sie die Auswirkung der Latenz selbst testen, indem Sie den Befehl tc verwenden.

Zum Beispiel wird dieser Befehl 10ms Verzögerung zu allen Paketen hinzufügen, die über eth0 gehen

tc qdisc add dev eth0 root netem delay 10ms

Verwenden Sie diesen Befehl, um die Verzögerung zu entfernen

tc qdisc del dev eth0 root

Weitere Informationen finden Sie hier: http://devresources.linux-foundation.org/shemminger/netem/example.html

Alle Anwendungen sind unterschiedlich, aber ich habe definitiv Situationen erlebt, in denen eine Latenz von 10 ms einen erheblichen Einfluss auf die Leistung des Systems hatte.

2voto

StackOverflowed Punkte 5665

Einer der Chefs von answers.com sagte, dass laut ihren Studien 400 ms Wartezeit für das Laden einer Webseite ungefähr der Zeitpunkt ist, an dem die ersten Besucher das Laden der Seite abbrechen und woanders hingehen. Mein Rat ist, den gesamten Prozess zu betrachten, von der ursprünglichen Kundenanfrage bis zur Ausführung, und wenn Sie dort gut abschneiden, brauchen Sie nicht weiter zu optimieren. 8,2 ms gegenüber 0,2 ms sind mathematisch gesehen exponentiell größer, aber aus menschlicher Sicht kann niemand einen Unterschied von 8,0 ms wirklich wahrnehmen. Deshalb gibt es bei Rennen auch Fotofinishs ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X