
Einer meiner Server reagiert überhaupt nicht:
top - 06:16:53 up 2:14, 1 user, load average: 30.95, 29.96, 22.92
Tasks: 168 total, 2 running, 166 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 12.6 sy, 0.0 ni, 0.0 id, 86.4 wa, 0.0 hi, 0.0 si, 1.1 st
KiB Mem : 1014524 total, 61368 free, 877028 used, 76128 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 4196 avail Mem
scroll coordinates: y = 1/168 (tasks), x = 1/12 (fields)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30 root 20 0 0 0 0 S 11.1 0.0 4:04.70 kswapd0
1116 root 20 0 791548 44900 0 S 0.4 4.4 0:14.91 dockerd
1 root 20 0 37752 2664 864 D 0.2 0.3 0:06.00 systemd
Es ist schwer zu sagen, was passiert, da ich nicht wirklich viele Informationen bekomme (sehr geringe Reaktion), aber das ist, was ich sehe:
- Auslastung durchschnittlich sehr hoch
- Ich sehe etwa 20% - 30% CPU-Auslastung
- Ich sehe keine hohe IO / Netzwerkauslastung
- Ich kann nicht feststellen, welche Prozesse sich in der Ausführungswarteschlange befinden
Wie ist es möglich, eine hohe durchschnittliche Last und eine geringe CPU-Auslastung zu erreichen?
Antwort1
Ihnen ist der Arbeitsspeicher ausgegangen und das System stürzt ab. Es ist nicht genügend freier Arbeitsspeicher vorhanden, um alle benötigten Prozessseiten im Arbeitsspeicher zu behalten, daher muss das Betriebssystem einige Seiten freigeben, um die benötigten Seiten von der Festplatte laden zu können. Da Sie keinen Swap-Speicher haben, können die freizugebenden Seiten nicht in den Swap-Speicher geschrieben werden. Die einzige Alternative besteht also darin, entweder schreibgeschützte Codeseiten zu verwerfen oder den Puffercache zu verkleinern. Wenn die Ausführung zu einer verworfenen Seite fortschreitet, muss diese auf Kosten einer anderen Seite erneut in den RAM gelesen werden. Irgendwann wird das Problem so schlimm, dass die meiste Zeit mit Warten darauf verbracht wird, dass Seiten von der Festplatte geladen werden, und nur sehr wenige CPU-Zyklen für nützliche Arbeit verwendet werden können.
Versuchen Sie, etwas Swap hinzuzufügen. Dies kann jedoch je nach Auslastungsmuster Ihrer Prozesse hilfreich sein oder auch nicht.
Antwort2
Wahrscheinlich ein Einhängepunktproblem. Wenn das System versucht, einen Einhängepunkt einzuhängen, der zu diesem Zeitpunkt nicht verfügbar ist, erhöht sich die Systemlast, obwohl Sie möglicherweise nicht bemerken, dass ein Prozess die CPU hortet.
Versuchen:
- Führen Sie es aus
mount
und prüfen Sie, ob es einen Einhängepunkt gibt, der derzeit nicht erreicht werden kann. - Überprüfen Sie
/etc/fstab
alle zum Startzeitpunkt definierten Einhängepunkte und prüfen Sie, ob einer davon zu diesem Zeitpunkt nicht erreicht werden kann.