раздел 02

RAM: оперативная память

RAM (оперативная память) - это «рабочий стол» сервера: место, где лежит всё, с чем он работает прямо сейчас. Измеряется в гигабайтах: 1 ГБ, 2 ГБ, 4 ГБ, 8 ГБ и больше. В отличие от диска, память быстрая, но временная - и её всегда ограниченное количество.

Что живёт в памяти

Запущенные процессы
Само приложение, веб-сервер, фоновые сервисы - каждый занимает память.
База данных
БД держит в памяти кэш и рабочие данные. Postgres, Redis особенно любят RAM.
Кэш
Часто используемые данные держат в памяти, чтобы не читать с диска - это ускоряет работу.
Контейнеры
Каждый Docker-контейнер - это процессы со своей памятью. Много контейнеров - много RAM.

Что будет, если памяти не хватит

Это самый коварный ресурс: когда он кончается, сервер не просто тормозит, а начинает падать.

  • Swap - система выгружает часть памяти на диск. Диск в тысячи раз медленнее RAM, поэтому всё начинает жутко тормозить.
  • OOM (Out Of Memory) - если памяти совсем нет, система убивает процесс. Внезапно «умирает» приложение или база данных. Это частая причина загадочных падений.

Как понять, что RAM мало

  • Сервис падает без явной причины, в логах - Killed или Out of memory.
  • Включился swap и всё резко затормозило (хотя CPU свободен).
  • В мониторинге память почти вся занята постоянно, без запаса.

Команды - free -h (сколько памяти занято и свободно, есть ли swap), top/htop (кто сколько ест).