Server überlastet. Wie vorgehen?
Naps
- webserver
Hi,
ich habe die letzten Tage ein Paar Probleme mit einem Managed Server gehabt.
Anscheinend dürfte die MySQL DB sehr stark überlastet sein.
Ich hab mir die Betroffene DB mit SHOW STATUS mal genauer angeschaut, nur weiß ich leider keine "normalen" Werte um diese vergleichen zu können.
Auf was kann ich noch zurückgreifen um die Ursache dieser Überlastung herauszufinden?
SSH Zugang habe ich.
MfG
Naps
Tach!
Auf was kann ich noch zurückgreifen um die Ursache dieser Überlastung herauszufinden?
Generell gesagt, ein Monitoring-Tool wie Munin verwenden, dann siehst du was normal ist und was ausschlägt. Aktuell kann man mit top oder schöner htop sich das Geschehen anzeigen lassen. Damit sieht man die Prozessor- und Speicherauslastung. Für Plattenzugriffe gibt es auch noch iotop. Das wäre ein Anfang. Weiterhin kann man über die Zugriffe im Access-Logs erkennen, was aufgerufen wird. MySQL hat auch noch Logs, zum Beispiel das Slow-Query-Log.
dedlfix.
Generell gesagt, ein Monitoring-Tool wie Munin verwenden, dann siehst du was normal ist und was ausschlägt. Aktuell kann man mit top oder schöner htop sich das Geschehen anzeigen lassen. Damit sieht man die Prozessor- und Speicherauslastung. Für Plattenzugriffe gibt es auch noch iotop. Das wäre ein Anfang. Weiterhin kann man über die Zugriffe im Access-Logs erkennen, was aufgerufen wird. MySQL hat auch noch Logs, zum Beispiel das Slow-Query-Log.
Perfekt, danke!
Wenn ich mir mit "top" das Ganze anzeigen lasse sehe ich eine CPU Auslastung durch meine DB von über 300%. Wie ist das möglich?
MfG Naps
Tach!
Wenn ich mir mit "top" das Ganze anzeigen lasse sehe ich eine CPU Auslastung durch meine DB von über 300%. Wie ist das möglich?
Wieviel Kerne hast du? Jeder müsste auch bei top als 100% zählen.
dedlfix.
Wieviel Kerne hast du? Jeder müsste auch bei top als 100% zählen.
ahh, das hatte ich übersehen. ;)
MfG Naps
Was mir noch aufgefallen ist. Wenn ich mir den Status mit SHOW STATUS anzeigen lasse sehe ich dass die "Connections" immer mehr werden. Heute morgen noch ca bei 50 000, jetzt bei 250 000.
Ist das Normal, kann das normal sein bzw. an was könnte das liegen?
MfG
Naps
Was mir noch aufgefallen ist. Wenn ich mir den Status mit SHOW STATUS anzeigen lasse sehe ich dass die "Connections" immer mehr werden. Heute morgen noch ca bei 50 000, jetzt bei 250 000.
Ist das Normal, kann das normal sein bzw. an was könnte das liegen?
Hab gerade gelesen, dass es sich dabei um alle, auch bereits beendete Verbindungen handelt. Liege ich da richtig?
Tach!
Was mir noch aufgefallen ist. Wenn ich mir den Status mit SHOW STATUS anzeigen lasse sehe ich dass die "Connections" immer mehr werden.
Hab gerade gelesen, dass es sich dabei um alle, auch bereits beendete Verbindungen handelt. Liege ich da richtig?
Das sind nicht die aktuellen Verbindungen. Ich hab jedenfalls keine 111k Verbindungen auf meinem Testsystem offen. SHOW PROCESSLIST zeigt dir das aktuelle Geschehen an.
dedlfix.
Hi,
ich konnte das Problem mittlerweile ausfindig machen. Eine anscheinend überfüllte Tabelle.
In diese Tabelle wurden Useraktionen gespeichert. Es waren ca. 150 000 Einträge vorhanden.
Als ich die Tabelle geleert habe, war die CPU Auslastung wieder unten.
150 000 Einträge bzw. eine Gesamtgröße von ca. 25MB können doch nicht zu viel sein oder?
Wie speichert man sonst so eine Menge Datensätze am besten ab?
MFG
Naps
Mahlzeit,
In diese Tabelle wurden Useraktionen gespeichert. Es waren ca. 150 000 Einträge vorhanden.
Ich habe hier Tabellen mit mehreren Millionen Einträgen ohne Probleme
150 000 Einträge bzw. eine Gesamtgröße von ca. 25MB können doch nicht zu viel sein oder?
Kommt auf die Geschwindigkeit der Festplatte und vorallem der Grösse des Arbeitsspeichers an. Evtl.hat es Einfluss ob das System 32 oder 64 Bit hat.
Wie speichert man sonst so eine Menge Datensätze am besten ab?
In einer Datenbank ;)
Und unter "so eine Menge" versteh wohl nicht nur ich was anders. 150T Datensätze ist nicht wirklich viel.
In einer Datenbank ;)
Und unter "so eine Menge" versteh wohl nicht nur ich was anders. 150T Datensätze ist nicht wirklich viel.
Laut Server Datenblatt:
CPU Type: Intel
Anzahl Prozessoren: 2 Prozessoren
Prozessor-Kern: Quad-Core
CPU: Intel® Core™ i7-920
CPU Taktfrequenz: 5600
Arbeitsspeicher: 8192 MB
Festplatten Typ: SATA
Raidsystem: RAID 1 (Software)
So schlecht ist der doch auch wieder nicht oder?
Mahlzeit,
So schlecht ist der doch auch wieder nicht oder?
Kommt ganz drauf an, was du damit machst.
Ich hab hier Server laufen, die würden mit der Ausstattung ausglühen, weil sie viel zu schwach ist, andere würden sich langweilen.
Tach!
Als ich die Tabelle geleert habe, war die CPU Auslastung wieder unten.
150 000 Einträge bzw. eine Gesamtgröße von ca. 25MB können doch nicht zu viel sein oder?
Das kommt darauf an, was du da für Querys drauf loslässt und was da für Optimierungen verwendet werden können.
Wie speichert man sonst so eine Menge Datensätze am besten ab?
Anwendungsfallabhängig. Ist es eine Nur-Schreib-Tabelle, à la Logfile, dann wäre zu überlegen, ob auf einen Index verzichtet werden kann, weil der beim Beschreiben angepasst werden muss und das gegebenenfalls unnötig Zeit verbraucht. Weitere Faktoren wären auch noch Trigger.
Ist es eine Datenmenge, die zu einem wesentlichen Teil auch gelesen werden muss, dann sind für die Querys günstige Indexe ein Beschleunigungselement. Das kommt einerseits auf die Query an, andererseits auch auf die Daten in den Tabellen. Nicht alle sind Index-geeignet. Gegebenenfalls muss da mal ein Datenbankspezialist ein Auge drauf werfen.
dedlfix.
Anwendungsfallabhängig. Ist es eine Nur-Schreib-Tabelle, à la Logfile, dann wäre zu überlegen, ob auf einen Index verzichtet werden kann, weil der beim Beschreiben angepasst werden muss und das gegebenenfalls unnötig Zeit verbraucht. Weitere Faktoren wären auch noch Trigger.
Nein, leider nicht. Die Daten werden ziemlich oft ausgewertet, wobei die Abfragen nicht sehr komplex sind.
Ist es eine Datenmenge, die zu einem wesentlichen Teil auch gelesen werden muss, dann sind für die Querys günstige Indexe ein Beschleunigungselement. Das kommt einerseits auf die Query an, andererseits auch auf die Daten in den Tabellen. Nicht alle sind Index-geeignet. Gegebenenfalls muss da mal ein Datenbankspezialist ein Auge drauf werfen.
Wird wohl die Einzige Lösung Sein, dass sich das mal Jemand ansschaut :)
Danke, MfG Naps