VPS для интернет-магазина подбирают не «на глаз», а расчётом: сколько посетителей приходит, сколько из них одновременно находится на сайте и сколько ресурсов съедает одна загрузка страницы. Ошибка в любую сторону стоит денег — слабый сервер для интернет-магазина роняет конверсию в час пик, избыточный просто сжигает бюджет. В этой статье выведем простую формулу расчёта мощности по трафику и конверсии, объясним, почему база данных магазина обязана жить на NVMe, и покажем готовые конфигурации — от первого магазина на WooCommerce до каталога на десятки тысяч товаров.
Чем магазин отличается от обычного сайта
Блог или лендинг почти полностью отдаётся из кеша: страница собрана один раз и раздаётся тысячам посетителей без нагрузки. У интернет-магазина так не получается:
- Корзина и checkout не кешируются. Каждое добавление товара, пересчёт доставки и оформление заказа — это живые запросы к PHP и базе данных.
- Каталог — это база. Фильтры «цена + размер + бренд», сортировки, поиск, остатки на складе — десятки SQL-запросов на каждую страницу.
- Фоновые интеграции. Синхронизация с 1С или МойСклад, выгрузка фидов в маркетплейсы и Яндекс Маркет, отправка писем — всё это ест CPU параллельно с посетителями.
- Цена простоя измерима. Если магазин с выручкой 300 000 ₽/мес недоступен 1% времени — это минус ~3000 ₽ и подорванное доверие. Поэтому важен и uptime площадки: у Cheap-Host он составляет 99,9%.
Отсюда главный вывод: магазину нужны гарантированные ресурсы (KVM-виртуализация, а не контейнеры с оверселлингом) и быстрый диск. Если вы ещё выбираете между шаред-хостингом и VPS — загляните в статью «VPS или виртуальный хостинг: 7 признаков, что пора переезжать».
Формула: от трафика к одновременным пользователям
Считаем в три шага. Понадобятся две цифры из Яндекс Метрики: посетители в сутки и средняя длительность визита.
Шаг 1. Пиковый час
Трафик распределён неравномерно: в вечерний пик магазин получает примерно 10–15% дневного трафика за один час. Для 2000 визитов в день это ~250 визитов в пиковый час.
Шаг 2. Одновременные посетители
Формула:
Одновременные = (визиты в пиковый час × длительность визита в сек) / 3600
Пример: 250 визитов × 300 сек (5 мин) / 3600 ≈ 21 человек одновременно
Шаг 3. Активные запросы
Из 21 находящегося на сайте реально «нажимает» в каждый момент лишь часть — остальные читают карточку товара. Практический коэффициент — 20–30%: то есть 4–7 одновременных PHP-запросов. Именно под эту цифру подбираются PHP-FPM-воркеры и память.
Один PHP-воркер WooCommerce или Битрикс занимает 80–150 МБ RAM и обрабатывает запрос за 0,3–1 секунду. Дальше арифметика памяти:
RAM = ОС и сервисы (~1 ГБ)
+ MySQL (2–4 ГБ на средний каталог)
+ Redis/кеш (0,5–1 ГБ)
+ PHP-воркеры (число × 150 МБ)
+ запас ×2 на акции и рекламу
Для примера выше: 1 + 3 + 1 + (10 × 0,15) ≈ 6,5 ГБ → с запасом ×2 ≈ 13 ГБ → тариф с 16 ГБ RAM
Коэффициент ×2 — не перестраховка: рассылка, реклама у блогера или распродажа приводит всплеск в 5–10 раз от обычного трафика, и умирают магазины именно в этот момент — когда посетители самые «горячие». Подробнее о подборе памяти — в статье «Сколько оперативной памяти нужно серверу».
Почему база данных обязана жить на NVMe
CPU у магазинов редко бывает первым узким местом — им почти всегда оказывается диск. Страница каталога с фильтрами генерирует 30–100 запросов к MySQL, и пока «горячие» данные не в кеше, каждый запрос — это чтения с диска. Разница между типами накопителей — на порядки:
| Диск | Случайные IOPS (порядок) | Задержка | Что это значит для магазина |
|---|---|---|---|
| HDD | ~100–200 | миллисекунды | Фильтры каталога «думают» секундами |
| SATA SSD | ~10 000–90 000 | ~0,1 мс | Нормально до первого наплыва |
| NVMe | сотни тысяч+ | ~0,02 мс | База отвечает мгновенно даже в пик |
NVMe подключается напрямую к PCIe, минуя узкий интерфейс SATA, — отсюда кратный прирост операций ввода-вывода и в разы меньшая задержка (разбор в статье о NVMe-дисках в VPS). На практике это выражается просто: поиск, фильтры и оформление заказа не деградируют, когда на сайте не 5 человек, а 50. У Cheap-Host NVMe стоит во всех тарифах, включая самый младший.
Место считайте так: система и стек ~10 ГБ, сайт с картинками товаров — от 5 до 50 ГБ (фото — главный потребитель), база — 1–10 ГБ, плюс локальные бэкапы минимум на 3 полных копии сайта. Для большинства магазинов 128 ГБ NVMe тарифа Pro хватает с запасом.
Готовые конфигурации по масштабу магазина
| Масштаб | Визитов/день | Рекомендация | Тариф Cheap-Host |
|---|---|---|---|
| Старт: WooCommerce/OpenCart, до 1000 товаров | до 500 | 6+ vCPU, 8 ГБ RAM, NVMe | Start — 450 ₽/мес |
| Рабочий магазин: активная реклама, интеграции с 1С и маркетплейсами | 500–5000 | 8–12 vCPU, 16 ГБ RAM, NVMe | Pro — 750 ₽/мес (базовый выбор) |
| Крупный каталог: 10 000+ товаров, 1С-Битрикс, Elasticsearch | 5000–20 000 | 16+ vCPU, 32 ГБ RAM, NVMe | Ultra — 1500 ₽/мес |
Почему базовым выбором мы называем Pro, а не Start. Магазин — это не только посетители: параллельно работают синхронизация остатков, генерация фидов, письма о заказах, антибот-фильтры. На 8 ГБ RAM всё это живёт впритык, и первый же рекламный всплеск отправляет сервер в swap. Pro (12 vCPU, 16 ГБ RAM, 128 ГБ NVMe за 750 ₽/мес) даёт тот самый двукратный запас из формулы выше — за разницу в 300 ₽/мес, которая окупается одним неупавшим вечером распродажи. Для магазинов на 1С-Битрикс с большим каталогом сразу смотрите Ultra — этому стеку памяти мало не бывает, детали в статье про требования Битрикс к VPS.
Отдельный плюс VPS перед «облаком с оплатой за потребление» — предсказуемость: трафик у Cheap-Host безлимитный, и удачная рекламная кампания не превратится в счёт-сюрприз. А если магазин перерос тариф, апгрейд CPU/RAM/диска выполняется без переустановки и потери данных — переезжать не придётся.
Что выжать из сервера до апгрейда
Правильная настройка стека способна утроить пропускную способность той же конфигурации:
- Кеш страниц. Категории и карточки товаров для незалогиненных посетителей отдавайте из кеша Nginx (fastcgi_cache) или плагина — это снимает 60–80% нагрузки на PHP.
- Redis для сессий и объектного кеша. Корзины и повторяющиеся выборки уходят из MySQL в память — база разгружается в разы.
- PHP-FPM под вашу RAM. Ограничьте
pm.max_childrenрасчётным числом воркеров, иначе наплыв посетителей уронит сервер в своп. - Индексы MySQL. Включите
slow_query_logи добавьте индексы под самые частые фильтры каталога — типичный медленный запрос ускоряется в 10–100 раз. - Оптимизация картинок. WebP и ленивая загрузка сокращают трафик страницы в 2–3 раза и ускоряют загрузку на мобильных.
И до, и после оптимизаций проверяйте результат нагрузочным тестом — как это сделать с помощью ab, wrk и k6, рассказали в статье о нагрузочном тестировании сайта. Тестировать нужно не главную страницу (она из кеша), а «дорогие» сценарии: фильтры каталога и добавление в корзину.
Не забудьте про бэкапы и безопасность
Магазин хранит заказы и персональные данные покупателей — потерять их дороже, чем любой сервер. Минимальный набор: ежедневный дамп базы с выгрузкой копии на внешнюю площадку, SSL-сертификат (без HTTPS не работают платёжные системы и страдает ранжирование), файрвол с закрытым наружу MySQL, вход по SSH-ключам и fail2ban. Базовая DDoS-защита L3/L4 у Cheap-Host включена во все тарифы — от сетевого флуда младших уровней она прикрывает без доплат.
FAQ
Какой сервер нужен магазину на 1000 посетителей в день?
По формуле это 3–5 одновременных активных запросов в пик — уверенно тянет тариф Pro (12 vCPU, 16 ГБ RAM, NVMe, 750 ₽/мес). Запас закладывайте не под средний день, а под рекламные всплески ×5–10.
Почему для магазина важен NVMe-диск?
Каждая страница каталога — десятки запросов к базе. NVMe даёт на порядки больше IOPS и в разы меньшую задержку, чем SATA SSD, поэтому фильтры, поиск и checkout не замедляются под нагрузкой.
Хватит ли виртуального хостинга для магазина?
Для мини-каталога без оплаты — возможно. Магазину с корзиной и интеграциями нужны выделенные CPU и память: на шаред-хостинге ресурсы общие, и в час пик магазин деградирует первым.
Как подготовить сервер к распродаже?
За неделю: нагрузочный тест «дорогих» сценариев, кеш страниц, Redis, проверка свободной RAM и диска. Не хватает — апгрейд тарифа: у Cheap-Host он делается без переустановки и потери данных.
Сколько стоит сервер для интернет-магазина?
Рабочий диапазон — 750–1500 ₽/мес: Pro за 750 ₽/мес как базовый вариант, Ultra за 1500 ₽/мес — для крупных каталогов и Битрикс.
Вывод
Расчёт сервера для интернет-магазина сводится к короткой цепочке: дневной трафик → пиковый час (10–15% дня) → одновременные посетители → активные PHP-запросы → память с двукратным запасом. Для абсолютного большинства магазинов ответ этой формулы — 16 ГБ RAM, побольше ядер и обязательно NVMe под базу. У Cheap-Host под это есть тариф Pro за 750 ₽/мес: 12 vCPU, 16 ГБ RAM, 128 ГБ NVMe, KVM, безлимитный трафик и разворачивание сервера за 45–60 секунд — а когда магазин вырастет, тариф апгрейдится без переезда. Все конфигурации — на cheap-host.onl.