GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Server überlastet, wirkt wie Speichermangel, aber das stimmt nicht

Es gibt viel freien Speicher, aber diese Zonen sind völlig fragmentiert:

Node 0 Normal: 1648026*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 6592104kB
Node 1 Normal: 8390977*4kB 1181188*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB

Es sind nur noch sehr wenige Seiten ungleich Null übrig, überhaupt keine in einer Zone mehr.

Ich kann nichts garantieren, aber Sie sollten versuchen, ksmd auszuschalten und den Speicher erneut zu komprimieren. Die Komprimierung wird nur bei Seitenzuweisungen höherer Ordnung automatisch aufgerufen und ruft niemals oom-killer auf, daher gehe ich davon aus, dass das System versucht hat, Speicher von den Bestellungen 2 oder 3 zuzuweisen, und hängen geblieben ist.

Um den Speicher zu komprimieren, führen Sie echo 1 >/proc/sys/vm/compact_memory aus

Bei dieser Frage gibt es nur so viel zu sagen, aber ich vermute ksmd verursacht die Fragmentierung, indem nach Seiten gesucht wird, die in beiden VMs dupliziert sind, und sie überall ausgetauscht werden.


Die Antwort von @Matthew sollte als Lösung für dieses Problem markiert werden. Die /proc/buddyinfo zeigt deutlich Fragmentierung (aufgrund von ksmd oder anderem Verhalten). Die Speicherverdichtung ist eine gültige Lösung.

Wir haben gerade das gleiche Problem auf unserem Server:

# cat /proc/buddyinfo
Node 0, zone      DMA      1      0      1      0      0      1      0      0      0      1      3
Node 0, zone    DMA32   4941  14025  10661   1462   1715    154      1      0      0      0      0
Node 0, zone   Normal 420283 217678   3852      3      1      0      1      1      1      0      0
Node 1, zone   Normal 1178429 294431  21420    340      7      2      1      2      0      0      0

Dies zeigt deutlich die Fragmentierung, da der meiste Speicher in viele kleine Speicherblöcke fragmentiert ist (große Zahl links, Null rechts).

Jetzt löst die Komprimierung dies:

# echo 1 >/proc/sys/vm/compact_memory
# cat /proc/buddyinfo
Node 0, zone      DMA      1      0      1      0      0      1      0      0      0      1      3
Node 0, zone    DMA32    485   1746   8588   3311   2076    505     98     19      3      0      0
Node 0, zone   Normal  83764  22474   8597   3130   1971   1421   1090    808    556    358     95
Node 1, zone   Normal  51928  36053  36093  29024  21498  13148   5719   1405    151      8      0

Linux
  1. Tmux beschafft nicht die .tmux.conf?

  2. Linux – System hängt, wenn der Speicher ausgeht?

  3. Node.js-Konflikte:/sbin/node Vs /usr/bin/node?

  4. Kann keine Verbindung zur Datenbank herstellen; Benutzer existiert in Datenbank, aber nicht auf Serverebene

  5. frei:Befehl nicht gefunden

Tomcat läuft, aber Port 8080 antwortet nicht

php.ini ändert sich, ist aber in Ubuntu nicht wirksam

Linux free zeigt eine hohe Speicherauslastung, top jedoch nicht

wget-Befehl auf Linux-Server nicht gefunden

Lassen Sie den Linux-Server rsync/scp/sftp zulassen, aber keine Terminalanmeldung

dd auf der gesamten Festplatte, aber keinen leeren Teil