System reagiert nicht, aber keine CPU-Auslastung

System reagiert nicht, aber keine CPU-Auslastung

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:

  1. Führen Sie es aus mountund prüfen Sie, ob es einen Einhängepunkt gibt, der derzeit nicht erreicht werden kann.
  2. Überprüfen Sie /etc/fstaballe zum Startzeitpunkt definierten Einhängepunkte und prüfen Sie, ob einer davon zu diesem Zeitpunkt nicht erreicht werden kann.

verwandte Informationen