В этой статье разберём:
- как использовать
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 без паники
Нормальная ситуация:
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 в первую очередь
Чтобы не утонуть в цифрах, можно запомнить несколько простых признаков.
-
Высокий 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 — проблема может быть в диске, а не в процессоре.
Анализ памяти через 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 начал тормозить, можно пройтись по короткой схеме.
-
Проверить память:
free -hСмотрим
availableи swap. -
Проверить динамику:
vmstat 1 10Смотрим
r,si,so,wa,st. -
Проверить CPU через sar:
sar -u 1 5Смотрим
%idle,%iowait,%steal. -
Если видно, что проблема в памяти или 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. Они не заменяют полноценный мониторинг, но помогают быстро понять, куда копать: в память, процессор, диск или виртуализацию.