Система не отвечает, но нет нагрузки на ЦП

Система не отвечает, но нет нагрузки на ЦП

Один из моих серверов полностью не отвечает:

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          

Трудно сказать, что происходит, так как я не могу получить много информации (очень неотзывчивый), но вот что я вижу:

  • средняя нагрузка очень высокая
  • Я вижу загрузку ЦП около 20% - 30%
  • Я не вижу высокой загрузки ввода-вывода/сети
  • Я не могу определить, какие процессы находятся в очереди на выполнение.

Как возможно иметь высокую среднюю нагрузку и низкую загрузку ЦП?

решение1

У вас закончилась память, и система тормозит. Недостаточно свободной памяти для хранения всех необходимых страниц процесса в памяти, поэтому ОС должна освободить некоторые страницы, чтобы иметь возможность загрузить необходимые страницы с диска. Поскольку у вас нет подкачки, освобождаемые страницы не могут быть записаны в пространство подкачки, поэтому единственной альтернативой является либо отбрасывание страниц кода только для чтения, либо сжатие буферного кэша. Когда выполнение переходит к странице, которая была отброшена, ее необходимо снова считать в ОЗУ за счет какой-то другой страницы. В какой-то момент проблема становится настолько серьезной, что большая часть времени тратится на ожидание загрузки страниц с диска, и очень мало циклов ЦП может быть использовано для полезной работы.

Попробуйте добавить немного подкачки, хотя это может помочь или нет, в зависимости от характера нагрузки ваших процессов.

решение2

Вероятно, проблема с точкой монтирования. Когда система пытается смонтировать точку монтирования, которая в данный момент недоступна, она начнет увеличивать нагрузку на систему, хотя вы можете и не заметить, что какой-то процесс нагружает ЦП.

Пытаться:

  1. Запустите mountи посмотрите, есть ли какая-то точка монтирования, которая не может быть достигнута в данный момент.
  2. Проверяем /etc/fstabвсе точки монтирования, определенные во время запуска, и смотрим, не является ли какая-либо из них недоступной в данный момент.

Связанный контент