Frage

Zur Zeit arbeite ich auf einem n-Tier-System und einige Datenbank-Performance-Probleme zu kämpfen. Ein Gebiet, das wir untersuchen, wurden die Latenz zwischen dem Datenbankserver und dem Anwendungsserver. In unserer Testumgebung des durchschnittliche Ping-Zeiten zwischen den beiden Boxen im Bereich von 0,2 ms jedoch auf der Kunden-Website seines mehr im Bereich von 8,2 ms. Ist das somthing wir sollten besorgt sein?

Für Ihr durchschnittliches System was euch eine resonable Latenz betrachten und wie würden Sie gehen über das Testen / Messen die Latenz?

Karl

War es hilfreich?

Lösung

Kurz gesagt: nein

Was Sie sollten überwachen, ist die globale Leistung Ihrer Abfragen (dh Transport zur DB + Ausführung + Transport auf den Server zurück)

Was Sie tun können, ist ein Leistungsindikator zu verwenden, um die Zeit, um Ihre Anfragen in der Regel, um zu überwachen auszuführen. Sie werden wahrscheinlich Ihre Ergebnisse sind über den Millisekundenbereich sehen.

Es gibt nicht so etwas wie „Angemessene Latenz“. Sie sollten lieber die „angemessene Latenz für Ihr Projekt“ betrachten, die eine Menge je nach variieren würde, was Sie gerade arbeiten. Menschen für eine Echtzeit-Handelsplattform nicht die gleiche Erwartung haben und für eine Nur-Lese-Amateur-Website.

Andere Tipps

Sorry für die sehr ungelegen Antwort, aber ich auf diese Frage gestolpert, als ich für Metriken anschaute, was andere Netzwerklatenzen wurden zu erreichen zwischen ihren App-Server und DB-Server. Wie auch immer, ich bemerkte, dass die anderen Antworten

Wie auch immer, kurz:. Ja, Netzwerk-Latenz (Ping durch gemessen) kann einen großen Unterschied machen

Wenn Ihre Datenbank Antwort ist .001ms dann werden Sie einen großen Einfluss aus gehen von einem 0,2 ms bis 8 ms ping sehen. Ich habe gehört, dass die Datenbankprotokolle gesprächig sind, die wenn sie wahr ist, bedeutet, dass sie mehr durch langsame Netzwerklatenz im Vergleich http betroffen sein würden.

Und mehr als wahrscheinlich, wenn Sie 1 Abfrage ausgeführt wird, dann das Hinzufügen 8ms die Antwort der DB bekommen wird sich nichts. Aber wenn Sie 10.000 Abfragen tun, die im Allgemeinen mit fehlerhaftem Code oder nicht-optimierte Verwendung eines ORM geschieht, dann werden Sie eine zusätzliche 80 Sekunden für einen 8ms Ping warten müssen, wo eine 0,2 ms ping, würde man nur 4 Sekunden warten.

Als eine Frage der Politik für mich, ich lasse nie Client-Anwendungen auf die Datenbank direkt in Verbindung. Ich brauche, dass Client-Anwendungen immer einen Anwendungsserver durchlaufen (zB einen REST Web-Service). Auf diese Weise, wenn ich versehentlich ein „1 + N“ ORM Problem hat, dann ist es nicht annähernd so impactful. Ich würde immer noch versuchen, das zugrunde liegende Problem zu beheben ...

auf einem Linux-basierten Server, den Sie den Effekt der Latenz testen können Sie sich von dem tc-Befehl.

Zum Beispiel wird dieser Befehl 10ms Verzögerung auf alle Pakete hinzufügen über eth0 gehen

tc qdisc add dev eth0 root netem delay 10ms

Mit diesem Befehl, um die Verzögerung entfernen

tc qdisc del dev eth0 root

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

Alle Anwendungen unterscheiden, aber ich habe definitiv Situationen gesehen, in denen 10 ms Latenz einen signifikanten Einfluss auf die Leistung des Systems hat.

Einer des Kopf honchos bei answers.com sagte nach ihrem Studium, 400 ms Wartezeit für eine Web-Seite zu laden ist über die Zeit, als sie zum ersten Mal startet Leute bekommen die Seite zu laden Cancelling und anderswo gehen. Mein Rat ist, auf dem gesamten Prozess zu betrachten, von den ursprünglichen Client-Anfrage an Erfüllung und wenn Sie gut es tun, gibt es keine Notwendigkeit, weiter zu optimieren. 8,2 ms vs 0,2 ms ist exponentiell größer im mathematischen Sinne, sondern von einem menschlichen Sinne, kann niemand wahrnehmen wirklich einen 8,0 ms Unterschied. Es ist, warum sie Foto Oberflächen in den Rennen haben;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top