В этой статье разберём:
- что такое RAM и swap простыми словами;
- как быстро проверить использование памяти на VPS;
- как понять, нормально ли используется swap или уже есть проблема;
- какие команды показывают реальную картину, а какие часто трактуют неправильно;
- что делать, если память почти закончилась.
Что такое оперативная память и swap
RAM — это оперативная память, с которой процессы работают прямо сейчас. Чем её меньше свободно, тем выше шанс, что сервер начнёт тормозить под нагрузкой.
Swap — это область на диске, которую Linux использует как запасной вариант, когда оперативной памяти начинает не хватать. Swap помогает пережить пики нагрузки, но он в разы медленнее обычной RAM, потому что работает через диск.
Простая логика такая:
-
если RAM хватает — сервер работает быстро и стабильно;
-
если RAM заканчивается — система начинает активнее использовать swap;
-
если и RAM, и swap закончились — Linux может принудительно завершить самые «прожорливые» процессы.
Важно: сам по себе факт использования swap ещё не означает катастрофу. Проблема начинается тогда, когда swap активно забивается, а сервер при этом заметно тормозит.
Самая быстрая проверка памяти: free -h
Первая команда, которую удобно запускать почти на любом VPS:
free -h
Пример вывода:
total used free shared buff/cache available
Mem: 1.9Gi 1.1Gi 180Mi 35Mi 700Mi 610Mi
Swap: 1.0Gi 120Mi 904Mi
Что означают основные столбцы:
-
total — общий объём памяти;
-
used — сколько памяти занято;
-
free — полностью свободная память;
-
buff/cache — память, которую Linux использует под буферы и файловый кэш;
-
available — самый полезный столбец: сколько памяти система ещё может отдать процессам без серьёзных проблем.
Главная ошибка новичков — смотреть только на free. В Linux это почти всегда плохой ориентир. Гораздо важнее смотреть на available: именно он показывает, сколько памяти реально остаётся в запасе.
Например, если в free почти ноль, но available ещё 500–700 МБ, паниковать рано. Это означает, что часть памяти занята кэшем и при необходимости может быть быстро освобождена.
Как отдельно проверить swap
Для swap есть две простые команды. Первая показывает, подключён ли swap вообще:
swapon --show
Если swap есть, вывод будет примерно таким:
NAME TYPE SIZE USED PRIO
/swapfile file 1G 128M -2
Если команда ничего не показывает, значит swap на сервере не настроен.
Вторая команда показывает список swap-областей в более старом формате:
cat /proc/swaps
А если хочешь сразу увидеть и RAM, и swap одной командой — снова используй:
free -h
На что смотреть:
-
если swap есть, но используется на 20–100 МБ — это ещё не страшно;
-
если swap занят сильно и при этом сервер тормозит — памяти не хватает;
-
если swap полностью забит, а свободной RAM почти нет — это уже красный флаг.
Как посмотреть динамику: vmstat
Команда free -h показывает состояние в конкретный момент времени. Но если хочется понять, что происходит в движении, удобнее использовать vmstat.
Запуск:
vmstat 1 5
Это значит: показывать статистику каждые 1 секунду, всего 5 раз.
Примерно тебя будут интересовать такие столбцы:
-
si — сколько данных система читает из swap;
-
so — сколько данных система пишет в swap;
-
free — свободная RAM;
-
wa — ожидание диска (I/O wait).
Если si и so постоянно не нули, это признак активной работы со swap. На слабом VPS это часто и есть причина «тормозов».
Если одновременно высокий wa, ситуация обычно ещё хуже: сервер не только лезет в swap, но и упирается в диск.
Как посмотреть подробную информацию о памяти
Если нужна более детальная картина, можно посмотреть содержимое файла /proc/meminfo:
cat /proc/meminfo | head -20
Там будет много строк, но самые полезные обычно такие:
-
MemTotal — общий объём RAM;
-
MemFree — полностью свободная память;
-
MemAvailable — наиболее полезный показатель доступной памяти;
-
SwapTotal — общий объём swap;
-
SwapFree — сколько swap ещё свободно.
Для повседневной работы достаточно free -h и vmstat, но /proc/meminfo полезен, если хочется разобраться глубже.
Как понять, что с памятью уже есть проблема
Вот признаки, на которые реально стоит обращать внимание:
-
в
free -hстолбецavailableстал очень маленьким; -
swap активно заполняется и не освобождается;
-
в
vmstatвидны постоянныеsi/so; -
сервер начал заметно тормозить даже при простых действиях;
-
в логах появляются сообщения про OOM Killer.
Проверить, не убивал ли Linux процессы из-за нехватки памяти, можно так:
dmesg | grep -i -E 'killed process|out of memory|oom'
Если в выводе есть строки вида Killed process ..., значит память действительно заканчивалась.
Что делать, если память почти закончилась
Если ты видишь, что RAM мало, а swap уже активно работает, действовать обычно надо в таком порядке:
-
Понять, какой процесс ест память. Для этого уже пригодятся
top,htopилиps aux --sort=-%mem. -
Если на сервере нет swap — добавить swap-файл, чтобы сгладить пики нагрузки.
-
Если swap есть, но его не хватает — подумать об увеличении RAM или оптимизации сервисов.
-
Проверить, не запущены ли лишние службы и процессы.
-
Убедиться, что на сервере не висит что-то забытое: старые docker-контейнеры, кривые cron-задачи, тестовые процессы, лишние демоны.
Важно: swap — это страховка, а не полноценная замена оперативной памяти. Если сервер регулярно живёт в swap, проблему надо решать, а не надеяться, что «само пройдёт».
Частые ошибки при проверке памяти
-
«Свободной памяти почти нет, значит всё плохо»
Не всегда. Linux любит использовать память под кэш. Смотри на
available, а не только наfree. -
«Swap используется — значит сервер сломан»
Не обязательно. Небольшое использование swap допустимо. Плохо, когда swap забивается и система начинает тормозить.
-
«После очистки кэша памяти стало больше — значит так и надо делать всегда»
Нет. Кэш файловой системы в Linux — это нормальная и полезная вещь. Не надо его постоянно «чистить ради красоты».
-
«На сервере 100% used по памяти в панели хостинга»
Панели хостинга иногда считают память грубо и не учитывают нормально доступный кэш. Сравни с выводом
free -hи/proc/meminfo.
Итоги
-
Разобрались, чем отличаются RAM и swap и зачем они нужны на VPS.
-
Научились быстро проверять память через
free -h. -
Поняли, как отдельно смотреть swap через
swapon --showи/proc/swaps. -
Разобрали, как смотреть динамику использования памяти через
vmstat. -
Выяснили, на какие признаки смотреть, если памяти действительно начинает не хватать.
Вывод: для быстрой диагностики памяти на VPS чаще всего хватает трёх команд — free -h, swapon --show и vmstat. Они дают уже достаточно информации, чтобы понять: всё нормально, сервер живёт на пределе или пора искать процесс, который съедает память.