Веб-разработка

Как рассчитать мощность сервера для интернет-магазина

Пошаговая методика расчёта процессора и памяти для интернет-магазина с примером, ориентирами по конфигурациям и типичными ошибками при выборе сервера.

Как рассчитать мощность сервера для интернет-магазина

Мощность сервера для интернет-магазина рассчитывают от пиковой нагрузки, а не от средней: сколько посетителей одновременно находится на сайте в самый загруженный час, сколько запросов к PHP и базе данных они создают и сколько времени уходит на один такой запрос. Для небольшого магазина обычно хватает VPS с 2 vCPU и 4 ГБ памяти, для среднего — 4–8 vCPU и 8–16 ГБ, крупным проектам нужен выделенный сервер или несколько машин. Ниже — понятная методика, по которой можно сделать прикидку самостоятельно, и типичные ошибки при выборе.

Покупатель оформляет заказ в интернет-магазине

Почему магазину нужно больше ресурсов, чем обычному сайту

Корпоративный сайт или блог почти целиком можно закэшировать: страницы одинаковы для всех посетителей. Магазин устроен иначе. Корзина, личный кабинет, фильтры каталога, расчёт доставки, поиск — всё это персональные или динамические запросы, которые каждый раз обрабатываются PHP и базой данных. Чем больше таких действий, тем больше нужно процессорного времени и памяти.

Кроме посетителей, сервер нагружают фоновые процессы:

  • обмен с 1С или складской системой;
  • импорт фидов поставщиков и обновление цен;
  • генерация YML-фидов для маркетплейсов и рекламы;
  • поисковые роботы, которые обходят тысячи страниц каталога;
  • рассылки, пересчёт индексов, резервное копирование.

Из чего складывается расчёт

Чтобы прикинуть нужные ресурсы, понадобятся четыре цифры. Их можно взять из Яндекс Метрики, логов сервера и мониторинга текущего хостинга.

1. Пиковое число посетителей в час

Откройте отчёт посещаемости по часам за последние месяцы и найдите самый загруженный час. Отдельно учтите сезонные пики: распродажи, праздники, рекламные кампании. Если магазин только запускается, возьмите плановую посещаемость и умножьте пиковый час на запас 2–3.

2. Количество динамических запросов на посетителя

Посетитель магазина в среднем просматривает несколько страниц, использует фильтры, кладёт товар в корзину. Часть страниц отдаётся из кэша, часть — нет. Для оценки удобно считать, что один посетитель создаёт 5–15 некэшируемых запросов к PHP за визит.

3. Время генерации одной страницы

Это время, за которое PHP формирует страницу без кэша. Его показывают инструменты разработчика CMS, профилировщики или время ответа сервера (TTFB) при отключённом кэше. Для оптимизированного магазина типично 0,2–0,5 секунды, для перегруженного — 1–2 секунды и больше.

4. Память на один процесс PHP

Каждый процесс PHP-FPM занимает в памяти от 40–60 МБ на лёгких сайтах до 150–250 МБ на тяжёлых CMS с большим количеством модулей. Посмотреть реальное потребление можно командой на текущем сервере:

ps -ylC php-fpm --sort:rss

В колонке RSS указан объём памяти в килобайтах (на некоторых системах процесс называется php-fpm8.2 или аналогично).

Расчёт ресурсов сервера в таблице

Пример расчёта по шагам

Возьмём условный магазин на популярной CMS. В самый загруженный час на сайте 1 800 посетителей. Каждый создаёт в среднем 10 некэшируемых запросов. Генерация одной страницы занимает 0,4 секунды процессорного времени, один процесс PHP занимает около 120 МБ.

  1. Запросов в час: 1 800 × 10 = 18 000.
  2. Запросов в секунду: 18 000 / 3 600 = 5 запросов в секунду в среднем за пиковый час.
  3. Поправка на неравномерность: внутри часа нагрузка скачет, поэтому умножаем на 2–3. Получаем 10–15 запросов в секунду в короткие пики.
  4. Нужное процессорное время: 15 × 0,4 = 6 секунд процессорного времени в секунду, то есть около 6 полностью занятых ядер.
  5. Запас: добавляем 30–50% на базу данных, фоновые задачи и роботов — выходит 8 vCPU.
  6. Память: одновременно обрабатывается около 15 запросов, плюс запас — 20 процессов × 120 МБ = 2,4 ГБ. Добавляем память под MySQL (буферный пул на размер активной части базы, например 2–4 ГБ), кэш Redis, систему и файловый кэш — итого 8–12 ГБ.

Вывод: такому магазину нужен VPS или выделенный сервер на 8 vCPU и 12–16 ГБ памяти. Если же оптимизировать каталог и довести генерацию страницы до 0,2 секунды, потребность в процессоре сократится примерно вдвое. Оптимизация часто дешевле, чем покупка более мощного сервера.

Совет: расчёт по формуле — это прикидка, а не гарантия. Перед сезонной распродажей проведите нагрузочное тестирование на копии сайта: оно покажет реальный предел конфигурации.

Ориентиры по конфигурациям

Масштаб магазина Посетителей в пиковый час Конфигурация
Стартовый, до 1 000 товаров до 300 VPS 2 vCPU, 4 ГБ RAM, NVMe 40 ГБ
Небольшой, до 10 000 товаров 300–1 000 VPS 4 vCPU, 8 ГБ RAM, NVMe 80 ГБ
Средний, десятки тысяч товаров, обмен с 1С 1 000–3 000 VPS 8 vCPU, 16 ГБ RAM, NVMe 160 ГБ
Крупный, высокий трафик, распродажи от 3 000 Выделенный сервер или кластер: отдельные серверы для базы и приложения

Цифры ориентировочные и зависят от CMS, темы, количества модулей и качества кода. Магазин на 1С-Битрикс обычно требует больше ресурсов, чем на WooCommerce или OpenCart при сопоставимом каталоге — подробности в статье Хостинг для 1С-Битрикс.

Процессор, память, диски, канал: что важнее

Процессор

Для PHP важно не только количество ядер, но и частота: одна страница генерируется в одном потоке, поэтому более быстрое ядро сокращает время ответа. При выборе VPS обращайте внимание на модель процессора, если провайдер её указывает.

Оперативная память

Нехватка памяти — самая частая причина внезапных падений: при пике процессы PHP заполняют память, система начинает использовать swap, и сайт перестаёт отвечать. Закладывайте запас 30–50%.

Диски

Для магазина нужны только SSD или NVMe. База данных постоянно читает и пишет мелкие блоки, и на HDD это превращается в узкое место. Об этом — в статье NVMe, SSD или HDD.

Сетевой канал

Для большинства магазинов канала 100 Мбит/с хватает с запасом, если изображения оптимизированы и отдаются через кэш браузера. При большом количестве фото и видео подумайте о CDN.

Процессор и модули памяти сервера

Где разместить магазин

Магазину важна возможность быстро добавить ресурсы перед распродажей. Удобно, когда провайдер позволяет увеличить конфигурацию VPS без переноса сайта. Среди наших партнёров:

  • Timeweb Cloud — облачные VPS и выделенные серверы в российских дата-центрах, конфигурацию можно менять из панели. Подробнее — в обзор Timeweb и Timeweb Cloud.
  • AdminVPS — VPS и выделенные серверы, вариант для проектов, которым нужен целый физический сервер.
  • McHost — хостинг и VPS для небольших магазинов на старте.

Актуальные конфигурации и цены уточняйте на сайтах провайдеров. Если магазин собирает данные покупателей, выбирайте дата-центр в России — этого требует 152-ФЗ.

Типичные ошибки при выборе мощности

  • Считать по средней посещаемости. Сервер падает в пиковый час, а не в среднем.
  • Забыть про фоновые задачи. Обмен с 1С и импорт фидов могут занимать ресурсы сильнее посетителей.
  • Покупать «с запасом на годы». В облаке проще начать с меньшей конфигурации и увеличивать её по данным мониторинга.
  • Лечить тормоза только железом. Медленные запросы к базе и тяжёлые модули съедят любой запас.
  • Не следить за нагрузкой. Без мониторинга вы узнаете о нехватке ресурсов от клиентов.

Важно: перед крупной акцией увеличьте ресурсы заранее и проверьте, что сайт работает на новой конфигурации. Менять тариф в момент, когда магазин уже лежит, — плохая идея.

Как следить за нагрузкой после запуска

Расчёт нужно проверять фактами. Настройте мониторинг загрузки процессора, памяти, диска и времени ответа сайта. Если в пиковые часы загрузка процессора держится выше 70–80%, а память близка к пределу — пора увеличивать конфигурацию или оптимизировать сайт. Простые инструменты для этого описаны в статье Мониторинг доступности сайта. Когда рост продолжается, переходите к масштабированию: выносите базу данных на отдельный сервер, добавляйте кэширование, CDN.

Мониторинг нагрузки на сервер

Частые вопросы

Хватит ли магазину виртуального хостинга?

Для очень небольшого магазина с десятками заказов в день — возможно. Но лимиты процессов на виртуальном хостинге быстро становятся узким местом, поэтому для растущего магазина лучше сразу выбрать VPS.

Что выгоднее: VPS или выделенный сервер?

До 8–16 vCPU обычно удобнее облачный VPS: его легко масштабировать. Выделенный сервер выгоднее при стабильно высокой нагрузке. Подробнее — в статье VPS или выделенный сервер.

Как понять, что тормозит именно сервер, а не сайт?

Сравните время генерации страницы в часы пик и ночью. Если ночью сайт быстрый, а днём медленный — не хватает ресурсов. Если медленно всегда — проблема скорее в коде, модулях или базе данных.

Нужно ли сразу выносить базу на отдельный сервер?

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

Итог

Мощность сервера для магазина считают от пикового часа: посетители × динамические запросы × время генерации страницы, плюс память на процессы PHP и базу данных, плюс запас. Начинайте с разумной конфигурации, следите за мониторингом и увеличивайте ресурсы заранее перед сезоном. Если не хотите разбираться сами — поможем рассчитать нагрузку, подобрать и настроить сервер: смотрите услугу аренда сервера и хостинга.

В статье есть партнёрские ссылки: если вы зарегистрируетесь по ним, студия получит вознаграждение, для вас цена не меняется.

Читать дальше

Статьи по теме

Начать проект

Давайте сделаем крутой проект вместе

Расскажите о задаче — мы бесплатно проанализируем нишу, предложим решение и назовём сроки со стоимостью. Без навязчивых звонков.

Телефон

8 (926) 837 76 68

Почта

info@pear-advert.ru

Офис

Москва, ул. Гиляровского, 57с1

Оставьте заявку

Ответим в течение рабочего дня

Выберите тип проекта

Данные используются только для ответа на заявку и хранятся не дольше трёх лет.