Краткий ответ: Сначала посмотрите free -h и читайте колонку available — то, что Linux держит большую часть RAM под кэш, нормально и полезно. Настоящая проблема выглядит как малая available память плюс строки OOM-киллера в dmesg. Найдите главных потребителей через ps aux --sort=-%mem | head и перезапустите текущий сервис.
Обзор
Половина тревог «RAM закончилась!» ложные: кэшированная память освобождается по требованию и говорит, что ядро делает своё дело. Этот чек-лист отделяет здоровое кэширование от настоящего дефицита памяти, который убивает процессы и замораживает серверы.
Что нужно иметь
- Доступ по SSH или через KVM Console.
Пошаговая инструкция
- Прочитайте реальный запас:
Беспокойтесь только когда available — малая доля от общего объёма.free -h - Проверьте, не убило ли ядро уже кого-то:
OOM-килл объясняет загадочно мёртвые сервисы.sudo dmesg -T | grep -i 'out of memory' sudo journalctl -k | grep -i oom - Перечислите самые тяжёлые процессы:
Типичные нарушители:ps aux --sort=-%mem | head -10mysqld, слишком большие пулыphp-fpm, node-приложения, панели управления на малых планах. - Стабилизируйте: перезапустите текущий сервис; долгоживущим PHP/node-воркерам полезна периодическая ротация (например, PHP-FPM
pm.max_requests). - Добавьте запас прочности: настройте swap, если его нет, — он превращает жёсткие OOM-падения в мягкое замедление.
- Повторяющийся дефицит при всём настроенном = нагрузке нужно больше RAM; обновите план.
Типичные проблемы
- MySQL убивается каждую ночь: классический OOM-паттерн на малых VPS во время бэкапов — уменьшите буферы или добавьте swap.
- Слишком большой пул PHP-FPM:
pm.max_children × память на воркердолжно умещаться в RAM. - Вообще нет swap: один всплеск трафика может OOM-нуть базу; даже 1–2 GB swap поглощают пики.
Когда обращаться в поддержку
Если использование памяти значительно больше суммы ваших процессов, или сервер зависает при достаточной available-памяти, — откройте тикет с free -h, выдержками OOM и временными метками.
Частые вопросы
Linux показывает почти ноль свободной памяти — это проблема?
Обычно нет: Linux намеренно использует простаивающую RAM под дисковый кэш и освобождает её по требованию. Оценивайте дефицит по колонке available в free -h и OOM-сообщениям, а не по колонке free.
Как подтвердить, что OOM-киллер остановил мой сервис?
Поищите в сообщениях ядра: dmesg -T | grep -i "out of memory" или journalctl -k. Ядро логирует, какой именно процесс оно убило, когда, и состояние памяти на тот момент.
Похожие статьи
- Как диагностировать высокое использование RAM
- Высокая нагрузка на CPU: быстрая диагностика
- VPS не отвечает: что делать
- Как собрать логи для поддержки
Нужна помощь? Связаться с поддержкой Cloud2Y →
