Vor ungefähr 10 Jahren werde ich den Blog wiederbeleben, als ich noch ein junger Ingenieur war. In letzter Zeit haben sich die Chancen verringert, mit ssh eine Verbindung zum Server herzustellen und ihn zu überprüfen, aber es lohnt sich, sich daran zu erinnern. https://itinao.hatenadiary.org/
Ich bin ein Ingenieur. Sobald ich zur Arbeit gehe, sagen glitzernde Verkäufer und Planer dies.
Vertrieb "Irgendwie ist der Server schwer" Projekt "Irgendwie! Es wird kein Job"
Ich "Ja, ich weiß nicht, wie ich nachforschen soll." Ich "Es tut mir leid. Ich werde bald meinen Senior kontaktieren."
Als Programmierer fehlt mir das Wissen und die Kenntnisse auf der Infrastrukturseite. Ich möchte etwas tun, aber ich kann nichts dagegen tun. ..
Dies ist ein häufiger Anblick, wenn Sie Ihren eigenen Dienst betreiben.
Der Informationsminister ist wichtig, aber schließlich ist er Ingenieur. Ich möchte es selbst tun können. Für eine solche Person. Lassen Sie uns zunächst das Konzept von Engpässen lernen.
1.CPU-Auslastung
2. I/O Last
Der Zustand, in dem der Prozess die CPU belegt (berechnet von der CPU)
Wenn ein Prozess (Programm) die CPU verwendet und die Nutzungsrate lange Zeit 100% beträgt, wird die Ausführung anderer Prozesse beeinträchtigt.
Es wäre ein Problem, wenn ein Wort falsch wäre, aber die 100% ige CPU-Auslastung selbst nicht schlecht ist, und es ist ideal, wenn es keine anderen Engpässe als Festplatten- und Speicherkapazität gibt.
Überprüfen Sie, ob das Programm außer Kontrolle geraten ist (Endlosschleife usw.).
Überprüfen Sie die Verarbeitung in der neuesten Release-Version.
E / A bedeutet Eingabe / Ausgabe. Häufiges Ein- und Ausgeben von Daten belastet die Hardware und das Netzwerk, sodass die CPU-Auslastung und die E / A-Auslastung unterschiedlich sind. Eine hohe CPU-Auslastung verlangsamt nicht unbedingt die E / A, sondern viel Lesen und Schreiben auf die Festplatte.
Gibt es viele Programme, die Dateien eingeben und ausgeben?
Gibt es einen Festplattenzugriff aufgrund eines Austauschs aufgrund von Speichermangel?
Wenn nicht genügend Speicher vorhanden ist, verwendet das System Swap. Wenn umgekehrt viel Zugriff auf den Swap besteht, besteht möglicherweise die Möglichkeit, dass der Speicher knapp wird.
Bisher haben wir die Konzepte der CPU-Auslastung und der E / A-Auslastung gesehen. Lassen Sie uns als Nächstes fortfahren, wie Engpässe in Bezug auf CPU-Auslastung und E / A-Auslastung untersucht werden.
1.Beruhige zuerst den Geist. Das ist wichtig.
2.Überprüfen Sie den Lastdurchschnitt oben.
3.CPU und ich mit sar/O Überprüfen Sie, welcher höher ist.
4.Informationen für jeden Prozess in ps anzeigen.
5.Wir werden Maßnahmen ergreifen, z. B. das Ausführungsprogramm überprüfen und die Version zurückgeben.
6.Wenn es kein Problem gibt, in der Mitte anzuhalten, beenden Sie den fehlerhaften Prozess oder starten Sie ihn neu.
Dies ist jederzeit wichtig. Es tut meinen Augen weh, es schnell loszuwerden, aber keine Panik.
Beschäftigen wir uns mit der Fettigkeit.
Lassen Sie uns zunächst den Lastdurchschnitt mit dem Befehl TOP anzeigen.
Die Anzahl der Prozesse, die auf die Ausführung warten, und die Festplatten-E / A pro Zeiteinheit in einer CPU. Eine Zahl, die angibt, wie viele Aufgaben pro Zeiteinheit gewartet haben. Wenn dies hoch ist, bedeutet dies, dass die Belastung des Systems hoch ist.
Wenn der Lastdurchschnitt höher als die Anzahl der Kerne ist, kann dies zu einer Last führen.
$top
top - 00:41:49 up 6 days, 2:24, 1 user, load average: 2.15, 3.02, 3.20
Tasks: 93 total, 1 running, 45 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3977928 total, 3324844 free, 121568 used, 531516 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3630656 avail Mem
Der Lastdurchschnitt: 2,15, 3,02, 3,20 ist der Lastdurchschnitt. Die Werte für die letzten 1 Minute, 5 Minuten und 15 Minuten von links.
Es gibt zwei Dinge zu sehen
Überschreitet der durchschnittliche Laststatus die Anzahl der Kerne?
Tritt ein Tausch auf?
Schauen wir uns als nächstes den Ladestatus für jeden Kern an.
Im Fall von Multi-Core ist es möglicherweise nicht möglich, allein anhand des Lastdurchschnitts zu beurteilen. Verwenden Sie in einem solchen Fall sar -P ALL, um den Status jeder CPU einzeln zu erfassen. Selbst wenn mehrere CPUs installiert sind und nur eine Festplatte vorhanden ist, kann die CPU-Last auf andere CPUs verteilt werden, die E / A kann jedoch nicht verteilt werden, was zu einer Last führt.
$ sar -P ALL
Linux 3.10.0-862.2.3.el7.x86_64 (118-27-1-88) 10/01/2018 _x86_64_ (2 CPU)
01:17:35 AM CPU %user %nice %system %iowait %steal %idle
01:17:36 AM all 0.00 0.00 0.00 0.00 0.00 100.00
01:17:36 AM 0 0.00 0.00 0.00 0.00 0.00 100.00
01:17:36 AM 1 0.00 0.00 0.00 0.00 0.00 100.00
Die Bedeutung von jedem ist hier.
Anzeige | Erläuterung |
---|---|
%user | Prozentsatz der Zeit, in der sich die CPU im Benutzermodus befand |
%system | Prozentsatz der Zeit, in der sich die CPU im Kernelmodus befand |
%iowait | Prozentsatz der Zeit, in der die CPU auf E / A gewartet hat |
%idle | Prozentsatz der Zeit, in der die CPU im Leerlauf war |
Hier ist was zu sehen
%Wenn der Leerlauf klein ist, ist die CPU-Auslastung hoch und die CPU kann der Engpass sein.
Wenn festgestellt wird, dass die CPU die Ursache für die Last ist Als nächstes wollen wir herausfinden, welcher Prozess das Falsche tut.
$ ps auwx | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19232 1516 ? Ss Feb09 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S Feb09 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Feb09 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S Feb09 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S Feb09 0:00 [stopper/0]
root 6 0.0 0.0 0 0 ? S Feb09 0:06 [watchdog/0]
root 7 0.0 0.0 0 0 ? S Feb09 0:00 [migration/1]
root 8 0.0 0.0 0 0 ? S Feb09 0:00 [stopper/1]
root 9 0.0 0.0 0 0 ? S Feb09 0:00 [ksoftirqd/1]
Siehe unten für die Bedeutung von jedem.
Anzeige | Erläuterung |
---|---|
%CPU | CPU-Auslastung verarbeiten |
%MEM | Physische Erinnerung an den Prozess |
VSZ(RSS) | Virtuell vom Prozess reserviert(Physik)Speicherbereich |
STAT | Prozessstatus |
TIME | Zeit, in der der Prozess die CPU belegte |
Prozesse, die auf der CPU ausgeführt werden können, befinden sich im Status TASK_RUNNING. Die CPU erhält die Aufgabe mit der höchsten Priorität unter mehreren Prozessen im Status TASK_RUNNING.
Notation | Status | Erläuterung |
---|---|---|
R | TASK_RUNNING | Ausführbarer Zustand |
S | TASK_INTERRUPTIBLE | Wartezustand. Signal kann empfangen werden |
D | TASK_UNINTERRUPTIBLE | Wartezustand. Kein Signalempfang |
Z | TASK_ZOMBIE | Zombie-Zustand. Zustand nach dem Verlassen |
T | TASK_STOPPED | Zustand aussetzen |
Es gibt zwei Dinge zu sehen
Überprüfen Sie die Größe des RSS, um festzustellen, ob es extrem große Prozesse gibt.
Überprüfen Sie den Status von TIME. Endlosschleife(TASK_RUNNING)Wenn, steigt die ZEIT weiter an.
Wenn das Austauschen mit dem Befehl TOP erfolgt, kann dies an einem unzureichenden physischen Speicher liegen. Schauen wir uns den Befehl sar genauer an.
$ sar -S
00:00:00 kbswpfree kbswpused%swpused kbswpcad %swpcad
00:10:01 2097148 0 0.00 0 0.00
00:20:01 2097148 0 0.00 0 0.00
00:30:01 2097148 0 0.00 0 0.00
00:40:01 2097148 0 0.00 0 0.00
Status | Erläuterung |
---|---|
kbswpfree | Freier Speicherplatz im Swap-Bereich |
kbswpused | Nutzungskapazität des Swap-Bereichs |
%swpused | Swap Area Usage Ratio |
kbswpcad | Swap Area Cache Kapazität |
Nachdem Sie überprüft haben, wie viel Swap hier stattfindet, Es ist leicht zu verstehen, wenn Sie das Intervall mit vmstat wie vmstat 1 100 angeben
$ vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 1 244208 10312 1552 62636 4 23 98 249 44 304 28 3 68 1 0
0 2 244920 6852 1844 67284 0 544 5248 544 236 1655 4 6 0 90 0
1 2 256556 7468 1892 69356 0 3404 6048 3448 290 2604 5 12 0 83 0
0 2 263832 8416 1952 71028 0 3788 2792 3788 140 2926 12 14 0 74 0
0 3 274492 7704 1964 73064 0 4444 2812 5840 295 4201 8 22 0 69 0
Anzeige | Erläuterung |
---|---|
r | Anzahl der Prozesse, die auf ihre Ausführung warten |
b | Anzahl der Schlafprozesse (unterbrechbar), Anzahl der nicht ausführbaren Prozesse |
swpd | Swap-Größe (KB) |
free | Freier Speicher (KB) |
buff | Pufferspeichergröße (KB) |
cache | Cache-Speichergröße (KB) |
si | Von der Festplatte eingelagerte Speichergröße (KB)/Sekunden) |
so | Speichergröße auf Festplatte ausgelagert (KB)/Sekunden) |
bi | Anzahl der vom Blockgerät empfangenen Blöcke (Blöcke)/Sekunden) |
bo | Anzahl der an das Blockgerät gesendeten Blöcke (Blöcke)/Sekunden) |
in | Anzahl der Interrupts/Sekunden |
cs | Anzahl der Kontextwechsel/Sekunden |
us | Zeitverhältnis der CPU-Auslastung des Benutzerprozesses |
sy | Zeit, die zum Ausführen des Kernel-Codes verwendet wird |
id | Prozentsatz der Zeit, in der die CPU im Leerlauf ist |
wa | CPU ist ich/Warten auf O. |
st | Prozentsatz der Zeit, in der dem Gastbetriebssystem keine CPU zugewiesen wurde |
r und b sind normalerweise 0~Ungefähr 2.
Wenn diese Anzahl groß ist, haben Sie möglicherweise das Gefühl, dass der Server schwer ist.
Grundsätzlich sind si und so immer Null.
Wenn hier immer eine Zahl angezeigt wird, ist entweder nicht genügend Speicher vorhanden oder es gibt ein Programm, das Speicher belegt.
Stellen Sie zunächst mit dem folgenden Befehl fest, ob es sich um eine CPU oder eine E / A handelt
top
sar
ps
vmstat
Wenn die CPU-Auslastung hoch ist
Verbesserung der Servererweiterung, Programmlogik und des Algorithmus
Wenn die E / A-Last hoch ist
Erweitern Sie den Cache-Bereich durch Hinzufügen von Speicher
Wenn keine Speichererweiterung möglich ist, sollten Sie Daten verteilen und einen Cache-Server einführen
Programmverbesserung I./O Frequenz reduzieren
Hmm, ich bin es leid, es zusammenzustellen. Ich hoffe, dies kann die Ursache der Belastung erklären.
Recommended Posts