Что значит load average, как в top и htop найти процесс, который нагружает процессор или память, что такое OOM killer и когда пора добавить ресурсов.
Содержание
Медленный сервер почти всегда упирается в одно из трёх: процессор, память или диск. Несколько команд покажут, во что именно и какой процесс виноват.
Нагрузка: load average
$ uptime
10:42:01 up 12 days, 3:07, 1 user, load average: 3.52, 2.10, 1.05
$ nproc
2Три числа — средняя нагрузка за 1, 5 и 15 минут: сколько процессов в среднем работали или ждали своей очереди. В Linux сюда попадают и те, кто ждёт диска. Сравнивайте с числом ядер (nproc): нагрузка 2 на двух ядрах — сервер занят полностью, 4 — задачи стоят в очереди.
Первое число больше третьего — нагрузка растёт, меньше — спадает. В примере выше 3,52 на двух ядрах: перегрузка, и она растёт.
top и htop: кто нагружает
top есть в любой системе. Удобнее htop — с полосками по ядрам, поиском и прокруткой. В Ubuntu он уже установлен, в остальных системах:
sudo apt install htop # Debian
sudo dnf install htop # AlmaLinux, из EPEL
sudo pkg install htop # FreeBSD| top | htop | |
|---|---|---|
| сортировать по процессору | P | P или F6 |
| сортировать по памяти | M | M или F6 |
| найти процесс | — | F3 |
| дерево процессов | V | F5 |
| завершить процесс | k | F9 |
| выход | q | q |
Строка %Cpu(s) в top показывает, на что уходит процессор:
| Поле | Что значит |
|---|---|
| us | программы: сайт, база, ваши скрипты |
| sy | ядро системы: сеть, диски, переключение задач |
| wa | ожидание диска: процессор свободен, но ждёт чтения или записи |
| id | простой |
Память
$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 2.9Gi 150Mi 20Mi 1.0Gi 0.7Gi
Swap: 1.0Gi 0.4Gi 0.6GiГлавный столбец — available: сколько памяти ещё можно отдать программам. Маленькое free — это нормально: Linux занимает свободную память под кэш диска и отдаёт её по первому требованию. Плохо, когда available близко к нулю и растёт занятый swap.
Кто занял память: ps aux --sort=-rss | head — столбец RSS, в килобайтах. Во FreeBSD — top -o res.
OOM killer: программа остановилась сама
Когда память кончается совсем, ядро Linux принудительно завершает самый крупный процесс — чаще всего базу данных или PHP. Снаружи это выглядит так: «сайт упал, MySQL почему-то остановился». Проверьте:
sudo journalctl -k | grep -i -E 'out of memory|killed process'-k — сообщения ядра с последней загрузки, за прошлую добавьте -b -1. В AlmaLinux журнал прошлых загрузок по умолчанию не хранится — там ищите в /var/log/messages. Если строки есть — серверу не хватает памяти. Что можно сделать:
- настроить программы скромнее: меньше процессов PHP-FPM, меньше буферы базы;
- добавить файл подкачки — запас на короткие пики;
- добавить памяти — об этом ниже.
Диск
Высокий wa в top и большая нагрузка при свободном процессоре — значит, всё ждёт диск. Кто читает и пишет больше всех, покажет pidstat из пакета sysstat:
sudo apt install sysstat # или dnf install sysstat
pidstat -d 1 # чтение и запись по процессам, раз в секунду
iostat -x 1 # загрузка диска: столбец %utilЧастые причины: резервное копирование в часы пик, запросы к базе без индексов, слишком подробные журналы и подкачка — когда памяти мало, система вынуждена писать её на диск. Если диск ещё и заполнен — Закончилось место на диске.
Сервер свободен, а сайт тормозит
Если нагрузки почти нет, а сайт отвечает медленно, дело в самом сайте: медленные запросы к базе, обращения к внешним сервисам, которые долго не отвечают. Если же нагрузку создают запросы извне — роботы, наплыв посетителей, — смотрите статью Сайт тормозит от наплыва запросов.
Пора добавить ресурсов
Если нагрузка постоянно выше числа ядер или память всё время на исходе, а программы уже настроены, — добавьте процессоров или памяти. В личном кабинете откройте сервер → вкладка «Ресурсы».
Новые ресурсы заработают после оплаты. Процессор и память можно поменять только на выключенном сервере, поэтому выберите: сразу — сервер выключится, изменится и включится, это около минуты, — или при следующем выключении, когда вы выключите его сами.
Графики процессора, памяти и диска за прошлые дни — на вкладке «Нагрузка»: по ним видно, когда начались проблемы.
Не нашли ответ? Напишите в поддержку — подскажем.


