GNU/Linux >> Linux Esercitazione >  >> Linux

Il server è sovraccarico, si comporta come se avesse esaurito la memoria, ma non è vero

C'è molta memoria libera, ma queste zone sono totalmente frammentate:

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

Sono rimaste pochissime pagine con ordine diverso da zero, nessuna in una zona.

Non posso garantire nulla, ma potresti provare a disattivare ksmd e ricompattare la memoria. La compattazione viene chiamata automaticamente solo su allocazioni di pagine di ordine superiore e non chiama mai oom-killer, quindi presumo che il sistema abbia provato ad allocare memoria dagli ordini 2 o 3 e si sia bloccato.

Per compattare la memoria eseguire echo 1 >/proc/sys/vm/compact_memory

C'è solo così tanto da dire in questa domanda, ma sospetto ksmd sta causando la frammentazione cercando le pagine duplicate in entrambe le VM e scambiandole ovunque.


La risposta di @Matthew dovrebbe essere contrassegnata come soluzione per questo problema. Il /proc/buddyinfo mostra chiaramente la frammentazione (dovuta a ksmd o altro comportamento). La compattazione della memoria è una valida soluzione.

Abbiamo appena riscontrato lo stesso problema sul nostro 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

Ciò mostra chiaramente la frammentazione, poiché la maggior parte della memoria è frammentata in tanti piccoli blocchi di memoria (numero grande a sinistra, zero a destra).

Ora la compattazione risolve questo :

# 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. Come controllare il carico del server su un server Windows

  2. Uno script può essere eseguibile ma non leggibile?

  3. Tmux non sta cercando .tmux.conf?

  4. Linux:il sistema si blocca quando esaurisce la memoria?

  5. Node.js Conflitti:/sbin/node Vs /usr/bin/node?

gratuito:comando non trovato

usa RPATH ma non RUNPATH?

php.ini cambia ma non è efficace in Ubuntu

Rimuovere la memoria condivisa posix quando non in uso?

fai in modo che il server linux consenta rsync/scp/sftp ma non un accesso al terminale

`ssh <host>` è una shell di login, ma `ssh <host> <comando>` non lo è?