GNU/Linux >> Linux の 問題 >  >> Linux

サーバーが過負荷になり、メモリ不足のように動作しますが、そうではありません

空きメモリはたくさんありますが、これらのゾーンは完全に断片化されています:

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

ゼロ以外の注文ページはほとんど残っておらず、1 つのゾーンにはまったく残っていません。

保証はできませんが、ksmd をオフにしてメモリを再圧縮してみてください。コンパクションは、より高いオーダーのページ割り当てでのみ自動的に呼び出され、oom-killer を呼び出すことはありません。そのため、システムがオーダー 2 または 3 からメモリを割り当てようとしてスタックしたと仮定します。

メモリを圧縮するには echo 1 >/proc/sys/vm/compact_memory を実行します

この質問には多くのことしかありませんが、私は ksmd を疑っています 両方の VM で複製されたページをスキャンし、ページ全体を交換することで断片化を引き起こしています。


@Matthew の回答は、この問題の解決策としてマークする必要があります。 /proc/buddyinfo 明らかに断片化を示しています (ksmd またはその他の動作による)。メモリ圧縮は有効なソリューションです。

サーバーで同じ問題が発生しました:

# 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

これは明らかに断片化を示しています。これは、ほとんどのメモリが多数の小さなメモリ ブロックに断片化されているためです (左側が大きな数、右側がゼロ)。

圧縮によりこれが解決されます:

# 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. [修正済み]ホストはこのMySQLサーバーに接続できません

  2. スクリプトは実行可能であるが読み取り可能ではありませんか?

  3. Tmuxは.tmux.confを調達していませんか?

  1. Linux –メモリが不足するとシステムがハングしますか?

  2. Node.jsの競合:/ sbin/nodeと/usr/ bin / node?

  3. free:コマンドが見つかりません

  1. Tomcat は実行中ですが、8080 ポートが応答しません

  2. Linuxは上書きではなくコピーする方法は?

  3. サーバーに NUMA があるかどうかを確認するにはどうすればよいですか?