GNU/Linux >> Tutoriels Linux >  >> Linux

Serveur surchargé, agit comme un manque de mémoire, mais ce n'est pas vrai

Il y a beaucoup de mémoire libre, mais ces zones sont totalement fragmentées :

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

Il reste très peu de pages de commande non nulles, aucune dans une zone.

Je ne peux rien garantir, mais vous pouvez essayer de désactiver ksmd et de recompacter la mémoire. Le compactage n'est appelé automatiquement que sur les allocations de pages d'ordre supérieur et n'appelle jamais oom-killer, donc je suppose que le système a essayé d'allouer de la mémoire à partir des ordres 2 ou 3 et s'est bloqué.

Pour compacter la mémoire, exécutez echo 1 >/proc/sys/vm/compact_memory

Il n'y a pas grand-chose à faire dans cette question, mais je soupçonne ksmd provoque la fragmentation en recherchant les pages dupliquées dans les deux machines virtuelles et en les échangeant partout.


La réponse de @ Matthew doit être marquée comme solution à ce problème. Le /proc/buddyinfo montre clairement la fragmentation (due à ksmd ou à un autre comportement). Le compactage de la mémoire est une solution valable.

Nous venons de rencontrer le même problème sur notre serveur :

# 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

Cela montre clairement la fragmentation, puisque la plupart de la mémoire est fragmentée en plusieurs petits blocs de mémoire (grand nombre à gauche, zéro à droite).

Maintenant, le compactage résout cela :

# 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. [Fixe] L'hôte n'est pas autorisé à se connecter à ce serveur MySQL

  2. Comment vérifier la charge du serveur sur un serveur Windows

  3. libre :commande introuvable

  4. utiliser RPATH mais pas RUNPATH ?

  5. php.ini change mais pas efficace dans ubuntu

Impossible de se connecter à la base de données ; L'utilisateur existe dans la base de données, mais pas au niveau du serveur

Tomcat en cours d'exécution, mais le port 8080 ne répond pas

Linux comment copier mais pas écraser ?

Comment savoir si mon serveur a NUMA ?

Linux gratuit montre une utilisation élevée de la mémoire, mais pas top

Commande wget introuvable sur le serveur Linux