Как использовать free, vmstat и sar для анализа нагрузки на VPS?

В этой статье разберём:

  • как использовать free для проверки оперативной памяти и swap;
  • как читать вывод vmstat и находить признаки нехватки ресурсов;
  • как установить и применять sar из пакета sysstat;
  • на какие показатели смотреть при анализе нагрузки;
  • какие ошибки чаще всего возникают при использовании этих команд.

Зачем использовать free, vmstat и sar вместе

Каждая команда показывает нагрузку под своим углом:

  • free быстро показывает состояние оперативной памяти и swap;

  • vmstat показывает динамику: процессы, память, swap, диск и CPU;

  • sar позволяет смотреть статистику по CPU, памяти, диску и сети в реальном времени или за прошлые периоды.

Если говорить совсем просто: free — быстрый взгляд, vmstat — живая динамика, sar — более подробная статистика.

На пустом или новом VPS free и vmstat обычно уже доступны. А вот sar часто нужно установить отдельно.

Проверяем память через free

Начнём с самой простой команды:

free -h

Ключ -h означает human-readable — вывод в удобном виде: МБ, ГБ и т.д.

Пример вывода:

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       950Mi       210Mi        28Mi       760Mi       740Mi
Swap:          1.0Gi        64Mi       960Mi

Главные столбцы:

  • total — общий объём памяти;

  • used — сколько памяти занято;

  • free — полностью свободная память;

  • buff/cache — память под кэш и буферы;

  • available — сколько памяти реально доступно для новых процессов;

  • Swap — состояние swap-раздела или swap-файла.

Самый важный показатель здесь — available. Новички часто смотрят только на free и думают, что память закончилась. Но Linux активно использует свободную память под кэш, и это нормально. Если available ещё достаточно большой, сервер может чувствовать себя нормально.

Проверка оперативной памяти через free -h

Как понять вывод free без паники

Нормальная ситуация:

Mem:   total 2G, used 1.2G, free 200M, buff/cache 600M, available 700M

Здесь мало free, но есть нормальный запас available. Это не проблема.

Плохая ситуация:

Mem:   available 50M
Swap:  used 900M из 1G

Здесь уже стоит разбираться: памяти почти нет, swap сильно используется, сервер может начать тормозить.

Особенно плохо, если:

  • available постоянно низкий;

  • swap активно растёт;

  • сервер тормозит даже при простых командах;

  • в логах есть сообщения про Out of memory или Killed process.

Смотрим динамику через vmstat

vmstat показывает не просто один снимок, а состояние системы во времени. Запустим проверку каждые 1 секунду, 5 раз:

vmstat 1 5

Пример вывода:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  65536 210000  98000 620000    0    0     2    10  120  240  5  2 92  1  0
 0  0  65536 209500  98200 620100    0    0     0     8  115  230  3  1 95  1  0

На первый взгляд выглядит страшно, но всё читается по блокам.

procs

  • r — сколько процессов ждут CPU;

  • b — сколько процессов заблокированы, часто из-за ожидания диска.

Если r постоянно больше количества ядер, процессору тяжело. Если b часто больше нуля — возможны проблемы с диском или I/O.

memory

  • swpd — сколько swap используется;

  • free — свободная память;

  • buff/cache — буферы и кэш.

swap

  • si — swap in, чтение из swap;

  • so — swap out, запись в swap.

Если si и so постоянно не нули, сервер активно гоняет данные между RAM и диском. Это часто признак нехватки оперативной памяти.

cpu

  • us — нагрузка пользовательских процессов;

  • sy — нагрузка ядра Linux;

  • id — простой CPU;

  • wa — ожидание диска;

  • st — steal time, время, «украденное» гипервизором на виртуальном сервере.

Анализ нагрузки через vmstat на VPS

На что смотреть в vmstat в первую очередь

Чтобы не утонуть в цифрах, можно запомнить несколько простых признаков.

  • Высокий r

    Процессы ждут процессор. Если значение постоянно выше количества CPU-ядер, серверу может не хватать процессора.

  • Постоянные si/so

    Система активно использует swap. Если это происходит постоянно, вероятно, не хватает RAM.

  • Высокий wa

    Процессор ждёт диск. Часто это говорит о проблемах с дисковой нагрузкой: база, логи, бэкапы, тяжёлые операции записи.

  • Высокий st

    Для VPS это важный показатель. Если st заметно выше нуля и держится постоянно, возможно, физический сервер у провайдера перегружен.

Для быстрой проверки удобно запускать:

vmstat 1 10

Так видно не один случайный снимок, а небольшую динамику.

Устанавливаем sar через sysstat

sar входит в пакет sysstat. Если команда не найдена, установим пакет:

sudo apt update
sudo apt install -y sysstat

Проверим, что sar появился:

sar -V

На некоторых системах сбор статистики может быть выключен. Для включения откройте файл:

sudo nano /etc/default/sysstat

И убедитесь, что там указано:

ENABLED="true"

После этого перезапустите службу:

sudo systemctl enable --now sysstat
sudo systemctl restart sysstat

Важно: историческая статистика появится не мгновенно. Если sysstat только что включили, старых данных ещё не будет. Зато команды вида sar -u 1 5 работают сразу в реальном времени.

Анализ CPU через sar

Для проверки процессора в реальном времени используем:

sar -u 1 5

Команда покажет загрузку CPU каждые 1 секунду, всего 5 раз.

Пример вывода:

12:10:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:02        all      5.20      0.00      1.10      0.50      0.00     93.20
12:10:03        all      8.40      0.00      1.80      1.20      0.00     88.60

Основные показатели:

  • %user — нагрузка обычных пользовательских процессов;

  • %system — нагрузка ядра;

  • %iowait — ожидание диска;

  • %steal — показатель, важный для VPS: сколько CPU забрал гипервизор;

  • %idle — сколько CPU простаивает.

Если %idle низкий, а %user высокий — сервер реально занят вычислениями. Если высокий %iowait — проблема может быть в диске, а не в процессоре.

Анализ загрузки CPU через sar на VPS

Анализ памяти через sar

Для памяти в sar используется ключ -r:

sar -r 1 5

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

  • kbmemfree — свободная память;

  • kbavail — доступная память;

  • %memused — процент используемой памяти;

  • kbbuffers и kbcached — буферы и кэш.

Для swap используется отдельная команда:

sar -S 1 5

Она показывает состояние swap: сколько занято, сколько свободно и насколько активно он используется.

Как смотреть историческую статистику sar

Если sysstat уже некоторое время работал на сервере, можно смотреть не только текущую нагрузку, но и статистику за день.

Например, CPU за сегодня:

sar -u

Память за сегодня:

sar -r

Дисковая активность:

sar -d

Сетевая активность:

sar -n DEV

Если команда пишет, что не может открыть файл статистики, это обычно значит, что sysstat только что установлен и ещё не успел накопить данные.

Пример быстрой диагностики нагрузки

Если VPS начал тормозить, можно пройтись по короткой схеме.

  1. Проверить память:

    free -h

    Смотрим available и swap.

  2. Проверить динамику:

    vmstat 1 10

    Смотрим r, si, so, wa, st.

  3. Проверить CPU через sar:

    sar -u 1 5

    Смотрим %idle, %iowait, %steal.

  4. Если видно, что проблема в памяти или CPU, дальше уже ищем конкретные процессы через top, htop или ps aux --sort=-%mem.

Такой порядок удобен тем, что сначала вы понимаете тип проблемы, а уже потом ищете конкретного виновника.

Частые ошибки и путаница

  • free показывает мало free — значит всё плохо

    Не обязательно. Смотрите на available, а не только на free.

  • Первая строка vmstat кажется странной

    Первая строка vmstat часто показывает средние значения с момента загрузки системы. Для анализа смотрите следующие строки.

  • sar: command not found

    Нужно установить пакет:

    sudo apt install -y sysstat
  • sar не показывает историю

    Скорее всего, sysstat недавно установлен или сбор статистики был выключен. Включите ENABLED="true" в /etc/default/sysstat и подождите, пока накопятся данные.

  • Высокий iowait принимают за проблему CPU

    Если высокий wa в vmstat или %iowait в sar, процессор может простаивать в ожидании диска. Тогда надо смотреть диск: iostat, iotop, логи базы, бэкапы.

Итоги

  • Разобрались, зачем использовать free, vmstat и sar вместе.

  • Научились проверять RAM и swap через free -h.

  • Разобрали основные столбцы vmstat: r, si, so, wa, st.

  • Установили sysstat и посмотрели CPU/память через sar.

  • Собрали простой порядок диагностики, если VPS начал тормозить.

Вывод: free, vmstat и sar дают хорошую первичную картину нагрузки на VPS. Они не заменяют полноценный мониторинг, но помогают быстро понять, куда копать: в память, процессор, диск или виртуализацию.

Оставить комментарий