
サーバーの 1 つが完全に応答しません。
top - 06:16:53 up 2:14, 1 user, load average: 30.95, 29.96, 22.92
Tasks: 168 total, 2 running, 166 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 12.6 sy, 0.0 ni, 0.0 id, 86.4 wa, 0.0 hi, 0.0 si, 1.1 st
KiB Mem : 1014524 total, 61368 free, 877028 used, 76128 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 4196 avail Mem
scroll coordinates: y = 1/168 (tasks), x = 1/12 (fields)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30 root 20 0 0 0 0 S 11.1 0.0 4:04.70 kswapd0
1116 root 20 0 791548 44900 0 S 0.4 4.4 0:14.91 dockerd
1 root 20 0 37752 2664 864 D 0.2 0.3 0:06.00 systemd
実際に多くの情報を得ることができないため(非常に応答がない)、何が起こっているのかを言うのは難しいですが、これが私が見ているものです:
- 負荷平均が非常に高い
- CPU負荷は約20%~30%です
- IO/ネットワーク使用率が高くない
- 実行キューにどのプロセスがあるかがわかりません
高い負荷平均と低い CPU 使用率を実現するにはどうすればよいでしょうか?
答え1
メモリが不足し、システムがスラッシング状態になっています。メモリに必要なプロセス ページをすべて保持するのに十分な空きメモリがないため、OS は必要なページをディスクからロードできるようにいくつかのページを解放する必要があります。スワップがないため、解放するページをスワップ領域に書き込むことはできません。そのため、唯一の代替手段は、読み取り専用コード ページを破棄するか、バッファー キャッシュを縮小することです。破棄されたページに実行が進むと、他のページを犠牲にして、そのページを再び RAM に読み込む必要があります。ある時点で、問題が悪化し、ほとんどの時間がディスクからページがロードされるのを待つことに費やされ、有用な作業に使用できる CPU サイクルがごくわずかになります。
スワップを追加してみてください。ただし、プロセスの負荷パターンによっては、役立つ場合と役立たない場合があります。
答え2
おそらくマウントポイントの問題です。システムがその時点で利用できないマウントポイントをマウントしようとすると、CPU を占有するプロセスが発生していないにもかかわらず、システム負荷が増加し始めます。
試す:
- 実行して
mount
、その時点でアクセスできないマウントポイントがあるかどうかを確認します。 - 開始時に定義されたすべてのマウントポイントをチェックし
/etc/fstab
、その時点でアクセスできないマウントポイントがあるかどうかを確認します。