GNU/Linux >> Belajar Linux >  >> Linux

Server kelebihan beban, bertindak seperti kehabisan memori, tetapi itu tidak benar

Ada banyak memori kosong, tetapi zona ini benar-benar terfragmentasi:

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

Ada sangat sedikit halaman pesanan bukan nol yang tersisa, tidak ada yang tersisa di satu zona sama sekali.

Saya tidak dapat menjamin apa pun tetapi Anda mungkin ingin mencoba mematikan ksmd dan memadatkan ulang memori. Pemadatan hanya dipanggil secara otomatis pada alokasi halaman pesanan yang lebih tinggi dan tidak pernah memanggil oom-killer, jadi saya berasumsi bahwa sistem telah mencoba mengalokasikan memori dari pesanan 2 atau 3 dan macet.

Untuk memadatkan memori, jalankan echo 1 >/proc/sys/vm/compact_memory

Hanya ada begitu banyak pertanyaan dalam pertanyaan ini, tapi saya menduga ksmd menyebabkan fragmentasi dengan memindai halaman yang digandakan di kedua VM dan menukar semuanya.


Jawaban @Matthew harus ditandai sebagai solusi untuk masalah ini. /proc/buddyinfo jelas menunjukkan fragmentasi (karena ksmd atau perilaku lainnya). Pemadatan memori adalah solusi yang valid.

Kami baru saja mengalami masalah yang sama di server kami :

# 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

Ini jelas menunjukkan fragmentasi, karena sebagian besar memori terfragmentasi dalam banyak blok kecil memori (angka besar di sebelah kiri, nol di sebelah kanan).

Sekarang pemadatan memecahkan ini :

# 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 Tidak Sumber .tmux.conf?

  2. Linux – Sistem Menggantung Saat Kehabisan Memori?

  3. gratis:perintah tidak ditemukan

  1. tomcat berjalan, tetapi port 8080 tidak merespons

  2. Linux bagaimana cara menyalin tetapi tidak menimpa?

  3. Bagaimana saya tahu jika server saya memiliki NUMA?

  1. Hapus memori bersama posix saat tidak digunakan?

  2. `ssh <host>` adalah shell login, tetapi `ssh <host> <command>` bukan?

  3. dd di seluruh disk, tetapi tidak ingin bagian kosong