Swap 100%, сайт тормозит — ребут не план лечения
Сервер «жив», но всё ползёт. Через час после ребута снова swap забит — и утром MySQL мёртв. Чаще всего это не «мало RAM навсегда», а процесс, который съел память, или OOM-killer уже отстрелил базу.
Картина, которую узнаёшь
- SSH открывается с задержкой, команды «висят».
free -h— swap Used ≈ 100%, available RAM почти ноль.- Сайт белый экран или 502 — php-fpm или mysql нет в процессах.
- После
rebootчас тишины — потом снова.
Три шага до ребута (2 минуты)
# 1. Память и swap
free -h
# 2. Кто жрёт RAM прямо сейчас
ps aux --sort=-%mem | head -10
# 3. Был ли OOM-killer недавно
dmesg -T 2>/dev/null | grep -iE 'out of memory|oom-kill|killed process' | tail -5
# или на старых системах:
grep -i oom /var/log/syslog 2>/dev/null | tail -5
Если в dmesg есть «Killed process mysql» — ребут только вернёт сайт на время; причина останется.
Частые виновники на VPS с сайтом
- MySQL —
innodb_buffer_pool_sizeбольше половины RAM на маленьком VPS. - php-fpm — слишком много workers × memory_limit.
- Bitrix — агрессивный кеш + cron + импорт в одно время.
- Утечка в приложении — рост RSS одного процесса днями (смотреть
top/htop).
Что делать дальше
- Зафиксировать имя процесса из OOM-лога — не гадать.
- Временно снизить workers php-fpm или лимиты MySQL — если понятен виновник.
- Добавить RAM — только если нагрузка легитимная, а не утечка.
- Настроить алерт по RAM/swap — не ловить «всё упало» ночью.
Swap 100% постоянно — диск деградирует, latency растёт. Это уже деградация, не «терпимо».
Честно про Mediops
На VDS Mediops следит за CPU и диском; при нехватке памяти часто растёт load и падает сайт — алерт по недоступности URL поможет раньше звонка клиента. Бесплатно: 1 сервер + 3 сайта.
Не узнавай о падении от клиента
Email-алерты на бесплатном тарифе; Telegram и MAX — с «Старт».