
Hallo, erstklassige Server-Gurus!
Ich betreibe einen Ubuntu-Server, der einen Apache-Tomcat-Dienst und eine MySQL-Datenbank hostet. Die Serverlast liegt selbst während der arbeitsreichsten Stunden der Woche immer nahe Null. Trotzdem kommt es 1-2 Mal pro Woche zu zufälligen Abstürzen, bei denen der gesamte Server nicht mehr reagiert.
Ein interessanter Effekt dieser Sperrung ist, dass alle Cronjobs anscheinend später als geplant ausgeführt werden, zumindest zeigen das die Zeitstempel in verschiedenen Systemprotokollen an. Daher scheint es mir so, als ob tatsächlich der gesamte Server einfriert und nicht nur die benutzerdefinierte Software, die als Teil des Tomcat-Dienstes läuft. Das Einfrieren dauert normalerweise etwa 3-5 Minuten, und danach läuft alles wieder normal.
Hardware:
Model: Dell PowerEdge R720, 16 cores, 16 GB ram
HDD-configuration: Raid-1 (mirror)
Main services:
apache tomcat, mysql, ssh/sftp
#uname -a
Linux es2 2.6.24-24-server #1 SMP Tue Jul 7 19:39:36 UTC 2009 x86_64 GNU/Linux
Beim Ausführen von sysstat kann ich enorme Spitzen sowohl bei der durchschnittlichen Auslastung als auch bei den Wartezeiten auf Festplattenblöcke erkennen, die zeitlich genau mit den Zeiten übereinstimmen, in denen Kunden Probleme mit dem Backend-System gemeldet haben. Nachfolgend sehen Sie eine Grafik der Festplattennutzung von sar mit einer sehr deutlichen Spitze um ca. 12:30 Uhr.
Ich entschuldige mich aufrichtig dafür, dass ich dies auf einem externen Server abgelegt habe, aber mein Ruf ist zu schlecht, um Dateien hier direkt einzufügen. Außerdem musste ich sie zusammenstellen, da ich nur einen Link posten kann :S
Sar-Grundstücke:http://213.115.101.5/abba/tmpdata/sardata_es.jpg
Grafik 1: Block warten, beachten Sie, wie der Util% auf 100 % bei ca. 12,58 steigt
Grafik 2: Blockübertragung, hier nichts Ungewöhnliches.
Grafik 3: Durchschnittliche Belastung, Spitzen zusammen mit Grafik 1
Grafik 4: CPU-Auslastung, immer noch nahe 0 %.
Grafik 5: Speicher, hier nichts Ungewöhnliches
Hat jemand eine Ahnung, was diesen Effekt auf einem System verursachen könnte? Wie ich bereits erklärt habe, ist die einzige Software, die auf dem Server läuft, ein Tomcat-Server mit einer SOAP-Schnittstelle, die es Benutzern ermöglicht, sich mit der Datenbank zu verbinden. Remote-Anwendungen stellen auch über SSH eine Verbindung zum Server her, um Dateien abzurufen und hochzuladen. In arbeitsreichen Zeiten haben wir vermutlich etwa 50 gleichzeitige SSH/SFTP-Verbindungen und nicht mehr als 1-200 Verbindungen über HTTP (SOAP/Tomcat).
Beim Googeln habe ich Diskussionen über Datei-Handles und Inode-Handles gefunden, aber ich glaube, diese sind für 2.6.x-Kernel normal. Ist jemand anderer Meinung?
cat /proc/sys/fs/file-nr
1152 0 1588671
cat /proc/sys/fs/inode-state
11392 236 0 0 0 0 0
Gleichzeitig zeigt „sar -v“ diese Werte für die Zeit des Auflegens oben an, aber die Inode-Nr. ist hier IMMER sehr hoch im Vergleich zu oben.
12:40:01 dentunusd file-nr inode-nr pty-nr
12:40:01 40542 1024 15316 0
12:45:01 40568 1152 15349 0
12:50:01 40587 768 15365 0
12:55:01 40631 1024 15422 0
13:01:02 40648 896 15482 0
13:05:01 40595 768 15430 0
13:10:01 40637 1024 15465 0
Ich habe dies auf zwei unabhängigen Servern gesehen, auf denen die gleiche Hardware, das gleiche Betriebssystem, die gleiche Software, die gleiche RAID-Konfiguration usw. ausgeführt wurden. Daher möchte ich glauben, dass es eher von der Software/Konfiguration als von der Hardware abhängt.
Vielen Dank für deine Zeit
/Ebbe
Antwort1
Die Probleme hingen mit einem Inkompatibilitätsproblem zwischen Ubuntu 8.04 LTS (Hardy) und dem Dell PERC 6/i RAID-Controller zusammen, wie in diesem Fehler gemeldet:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/607167 Ein Upgrade auf Ubuntu 10.04 LTS Lucid (Kernel 2.6.32) behebt das Problem.
Falls jemand anderes auf die gleichen Probleme stößt.
Antwort2
Möglicherweise führen Sie eine schwere Abfrage aus, die einen vollständigen Tabellenscan durchführt. Haben Sie Ihr langsames Abfrageprotokoll überprüft?
Wenn das der Fall ist, fügen Sie einfach entsprechende Indizes hinzu.
PS: Entschuldigung, wenn Sie das bereits getan haben.