Lösung 1:
Hier sind einige Tools zum Ermitteln der Laufwerksaktivität:
iotop
vmstat 1
iostat 1
lsof
strace -e trace=open <application>
strace -e trace=open -p <pid>
In ps auxf
Sie werden auch sehen, welche Prozesse sich im nicht interpretierbaren Festplattenruhezustand befinden (D
), weil sie auf E/A warten.
An manchen Tagen steigt die Auslastung auf 40 ohne Erhöhung der Besucherzahl.
Sie können auch ein Backup erstellen und sehen, ob die Festplatte langsam ausfällt. Eine Festplatte beginnt im Allgemeinen langsamer zu werden, bevor sie nachlässt. Dies könnte auch die hohe Auslastung erklären.
Lösung 2:
Die Ausgabe von top deutet darauf hin, dass das DBMS die meisten E/A-Wartezeiten erfährt, daher sind Probleme mit der Datenbankoptimierung ein offensichtlicher Kandidat, der untersucht werden sollte.
Auf einen Datenbankserver wartende E/A – insbesondere bei Lastspitzen – ist ein Hinweis darauf, dass Ihr DBMS entweder festplattengebunden ist (d. h. Sie benötigen ein schnelleres Festplattensubsystem) oder ein Optimierungsproblem hat. Sie sollten sich wahrscheinlich auch mit der Profilerstellung Ihres Datenbankservers befassen - d. h. einen Überblick darüber erhalten, was er tut und welche Abfragen Zeit in Anspruch nehmen.
Einige Startpunkte für die Diagnose von Datenbankoptimierungsproblemen:-
-
Suchen Sie die Abfragen, die am meisten Zeit in Anspruch nehmen, und sehen Sie sich die Abfragepläne an. Sehen Sie nach, ob jemand ungewöhnliche Abfragepläne hat, wie z. B. einen Tabellenscan, wo er nicht sein sollte. Möglicherweise muss der Datenbank ein Index hinzugefügt werden.
-
Lange Ressourcenwartezeiten können bedeuten, dass einige wichtige Ressourcenpools erweitert werden müssen.
-
Lange I/O-Wartezeiten können bedeuten, dass Sie ein schnelleres Disk-Subsystem benötigen.
-
Befinden sich Ihre Protokoll- und Datenvolumen auf separaten Laufwerken? Datenbankprotokolle haben viele kleine sequentielle Schreibvorgänge (im Wesentlichen verhalten sie sich wie ein Ringpuffer). Wenn Sie eine ausgelastete Workload mit wahlfreiem Zugriff haben, die dieselben Datenträger wie Ihre Protokolle verwendet, wirkt sich dies unverhältnismäßig auf den Durchsatz der Protokollierung aus. Damit eine Datenbanktransaktion festgeschrieben werden kann, müssen die Protokolleinträge auf die Festplatte geschrieben werden, sodass dies einen Engpass für das gesamte System darstellt.
Beachten Sie, dass einige MySQL-Speicher-Engines keine Protokolle verwenden, sodass dies in Ihrem Fall möglicherweise kein Problem darstellt.
Fußnote:Warteschlangensysteme
Warteschlangensysteme (ein statistisches Modell für den Durchsatz) werden hyperbolisch langsamer, wenn sich das System der Sättigung nähert. Für eine grobe Annäherung hat ein System, das zu 50 % ausgelastet ist, eine durchschnittliche Warteschlangenlänge von 2. Ein System, das zu 90 % ausgelastet ist, hat eine Warteschlangenlänge von 10, ein System, das zu 99 % ausgelastet ist, hat eine Warteschlangenlänge von 100.
Auf einem nahezu ausgelasteten System können daher kleine Laständerungen zu großen Änderungen der Wartezeiten führen, die sich in diesem Fall als Wartezeiten für E/A-Vorgänge äußern. Wenn die E/A-Kapazität Ihres Festplattensubsystems nahezu ausgelastet ist, können kleine Laständerungen zu erheblichen Änderungen der Antwortzeiten führen.
Lösung 3:
Führen Sie iotop
aus , oder atop -dD
, um zu sehen, welche Prozesse io tun. Verwenden Sie strace
wenn Sie einen genaueren Blick brauchen.