Сколько оперативной памяти нужно VPS под сайт, бота, базу или ИИ
Ориентиры по памяти для типичных задач — от статического сайта до Ollama и узла блокчейна, как проверить реальное потребление и понять, что пора расширяться.

Большинству личных проектов хватает 2–4 ГБ памяти. Статика, прокси и бот живут в 1 ГБ, тяжёлые веб-приложения и несколько сайтов на одном сервере просят 8 ГБ и больше, а для локальной языковой модели память — главный ресурс. Ниже ориентиры и способ проверить, попали ли вы в размер. Если ещё не понятно, нужен ли вообще VPS — что такое VPS.
Ориентиры по задачам
| Задача | Память | Примечание |
|---|---|---|
| Статический сайт, реверс-прокси, WireGuard | 1 ГБ | Nginx и ядро занимают меньше 200 МБ |
| Telegram-бот на Python/Go, парсер | 1 ГБ | один-два процесса, см. бот под systemd |
| PHP-сайт с MySQL при небольшом трафике | 2 ГБ | MySQL по умолчанию берёт ~400 МБ, PHP-FPM — по 30–60 МБ на воркер |
| Небольшой ИИ-агент, n8n, Uptime Kuma | 2 ГБ | Node.js-приложения стартуют от 150–300 МБ |
| WordPress/WooCommerce с нагрузкой, API на Node.js или Python с базой | 4 ГБ | место под кеш запросов и больше воркеров |
| GitLab, Nextcloud с десятками пользователей, несколько продакшен-сайтов | 8 ГБ | GitLab один требует минимум 4 ГБ |
| Несколько сайтов с базами, стек мониторинга, CI-раннер | 8–16 ГБ | считайте сумму, а не максимум |
| Ollama с моделью 7B в 4-битном квантовании | 8 ГБ, лучше 16 | модель занимает ~4,5 ГБ, плюс контекст; без GPU медленно |
| Узел блокчейна (Monero pruned, Bitcoin pruned) | 4–8 ГБ | упирается в диск и трафик, не в память |
| Windows Server с 1С или RDP для нескольких пользователей | 4–8 ГБ | сама система занимает ~2 ГБ |
| Minecraft Paper на 10 игроков | 4 ГБ | ставьте -Xmx на 1 ГБ меньше тарифа |
Цифры — для старта. Через день-два реальной работы проверьте по приборам.
Как проверить реальное потребление
free -h
Смотрите столбец available, а не free: Linux занимает свободную память под дисковый кеш и отдаёт её программам по первому требованию. Если available держится выше 20–25% тарифа — запас есть.
Кто именно ест память:
ps -eo pid,rss,comm --sort=-rss | head -15
rss в килобайтах. Для сервисов в Docker — docker stats --no-stream.
Были ли убийства по нехватке памяти:
dmesg -T | grep -i 'out of memory'
journalctl -k | grep -i 'killed process'
Любая строка Out of memory: Killed process ... означает, что ядро уже прибивало ваше приложение. Если это MySQL — данные могли пострадать.
Нагрузка на swap:
vmstat 1 5
Столбцы si/so — чтение и запись страниц в swap в секунду. Ненулевые постоянно — памяти не хватает прямо сейчас.
Swap как подушка, не как замена
Небольшой swap-файл (1–2 ГБ) сглаживает короткие пики: сборка проекта, apt upgrade, резкий наплыв запросов. Как его создать — swap в Linux. Но если swap занят постоянно, сервер тормозит на порядок — диск в тысячи раз медленнее памяти. Это сигнал переходить на тариф больше, а не увеличивать swap.
Где сэкономить, прежде чем расширяться
- MySQL/MariaDB. В
/etc/mysql/mariadb.conf.d/50-server.cnfпараметрыinnodb_buffer_pool_size(половина памяти под базу, не больше) иperformance_schema = offна маленьких тарифах. - PHP-FPM.
pm.max_childrenв пуле: считайте как (память для PHP) / (размер одного воркера изps). Десять воркеров по 60 МБ — это 600 МБ. - Node.js. Один процесс, а не кластер на каждое ядро, если трафик маленький.
- Лишние службы.
systemctl list-units --type=service --state=running— snapd, ненужные агенты, второй веб-сервер. - Docker. Ограничьте контейнеры
mem_limitв compose, чтобы один сервис не утянул остальные.
Как решать
Берите тариф на ступень меньше того, что кажется «с запасом», и смотрите на free -h и dmesg через пару дней. Расширить память на tanaka.host можно в любой момент без переустановки, а вот диск назад не уменьшить — поэтому экономить стоит именно на старте. Если и у самой большой конфигурации available стремится к нулю, читайте про выделенный сервер.