MAATRIX / Блог / Выделенные серверы / Выделенный сервер для высоконагруженного интернет-магазина: какой тариф выбрать

Выделенный сервер для высоконагруженного интернет-магазина: какой тариф выбрать

MAATRIX · Выделенные серверы · Статья 5 из 48

Самая неприятная кнопка в интернет-магазине — та, которую покупатель нажал второй раз. Первый щелчок по «Оформить заказ» ничего заметного не дал. После второго человек начинает подозревать, что сайт сломался. После третьего этой же мыслью уже занят разработчик, который ищет дубли заказов.

В такой момент предложение «возьмём сервер помощнее» звучит убедительно. Иногда оно действительно решает проблему. Но сначала стоит выяснить, на каком участке остановилась покупка: в приложении, в базе данных, у платёжного сервиса или в очереди фоновых задач. У каждого виновника свои отношения с количеством процессорных ядер.

У MAATRIX есть несколько выделенных конфигураций, которые можно рассматривать под магазин. Начать сравнение разумно с SCARAB и ANKH, а затем понять, когда оправданы PYLON и более крупные машины. При этом сам переход на выделенный сервер должен опираться на нагрузку магазина, а не на торжественность слов «высоконагруженный проект».

Подберите конфигурацию для своего проекта

Характеристики, стоимость и условия подготовки выделенных серверов MAATRIX в России и США.

Выбрать выделенный сервер

Почему тормозит интернет-магазин и когда нужен выделенный сервер

Представим условный магазин. Главная открывается быстро, каталог выглядит вполне живым, но вечером покупатели жалуются на оформление заказа. Процессор загружен не полностью. Свободная память есть. Инженер смотрит на графики и произносит опасное: «У нас всё нормально».

Проблема в том, что главная страница и оформление заказа могут проходить по разным путям. Готовая страница каталога отдаётся из кэша. Корзине нужно прочитать актуальные цены, проверить остатки, рассчитать доставку, сохранить заказ и, возможно, дождаться ответа сторонней системы. Быстрая витрина ещё не означает быструю кассу.

Начните с измерения этой цепочки. Сколько времени занимает приложение? Какие запросы выполняет база? Где возникают ожидания? Не удерживает ли долгий внешний вызов открытое соединение или транзакцию? Если программа ждёт службу доставки, дополнительные ядра не заставят эту службу ответить раньше. А если запрос перебирает огромную таблицу из-за отсутствующего индекса, полезнее сначала разобраться с запросом.

В PostgreSQL для такого расследования пригодится pg_stat_statements: расширение собирает статистику выполнения SQL-запросов. Важно смотреть и на длительность одного вызова, и на суммарные расходы частых запросов. Тысяча незаметных обращений иногда съедает больше ресурсов, чем один очевидно тяжёлый отчёт.

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

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

SCARAB, ANKH и PYLON: сравнение конфигураций и цены

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

ТарифПроцессорПамятьДискАренда в месяц
SCARABEPYC 4124P, 4 ядра32 ГБ DDR51 ТБ NVMe$309
ANKHRyzen 7600X, 6 ядер64 ГБ DDR51 ТБ NVMe$329
PYLONRyzen 7950X, 16 ядер64 ГБ DDR51 ТБ NVMe$429

Это комплектации и цены рассматриваемых тарифов; они не включают в наше сравнение ещё не выбранные резервные копии, лицензии и работу администратора.

Переход со SCARAB на ANKH увеличивает месячную аренду на $20 — примерно на 6,5%. За эту разницу вы получаете вдвое больше оперативной памяти и шесть физических ядер вместо четырёх. При такой структуре цен ANKH выглядит разумной отправной точкой для испытаний магазина, которому уже нужен отдельный физический сервер.

Это рекомендация по соотношению заявленных ресурсов и стоимости, а не обещание выдержать определённое число покупателей. Различия процессоров, настройки платформы и устройство приложения нужно проверить на рабочем сценарии. Название EPYC само по себе не делает SCARAB победителем любой серверной задачи, как и слово Ryzen не мешает ANKH работать с магазином.

У SCARAB остаётся вполне определённое место. Если приложение компактно, база вынесена отдельно, 32 ГБ уверенно хватает и нагрузочные испытания проходят с запасом, дополнительная память может просто не понадобиться. В таком случае экономия оправданна. Но выбирать меньшую конфигурацию по привычке, не сопоставив разницу в цене, странно: за год здесь речь идёт о $240.

С PYLON история другая. Доплата относительно ANKH составляет $100 в месяц, число ядер вырастает с шести до шестнадцати, а память остаётся прежней — 64 ГБ. Это важная развилка: PYLON логично проверять при нехватке вычислительных ресурсов и возможности распределить работу между ядрами. Проблему, которая заключается только в недостатке RAM, такой переход сам по себе не решает.

Сколько ядер и памяти нужно магазину, базе данных и поиску

Название сайта одно, но внутри него могут работать разные системы: каталог, поиск, база заказов, кэш, обработка фотографий, обмен с учётной программой, рассылки. Все они приходят за ресурсами со своим расписанием, и это расписание редко согласовано с рекламным отделом.

Для начала на одном ANKH можно разместить несколько служб, если измерения подтверждают достаточный запас. При этом каждой нужно оставить разумные ограничения. Если обработчик изображений способен занять все ядра, ему следует ограничить параллельность. Если служба поиска расходует память, её пределы должны учитывать соседство с базой. Иначе успешный импорт нового каталога станет неожиданным нагрузочным тестом отдела продаж.

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

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

Если памяти стабильно мало, в линейке есть NECROPOLIS с 128 ГБ DDR4 за $529 и PYRAMID с 128 ГБ DDR5 за $729. Однако переход на них меняет не только объём RAM, но и процессоры, устройство памяти, дисковую конфигурацию. Поэтому нужно сравнить два варианта: более крупную машину для всего магазина и разделение служб между несколькими серверами. Перенос базы отдельно иногда даёт более понятный путь роста; при этом появляются сетевая задержка и дополнительные обязанности по обслуживанию.

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

Нагрузочный тест интернет-магазина перед распродажей

Фраза «у нас сто тысяч посетителей» почти ничего не говорит о требуемом сервере без указания периода и поведения людей. Посетители могут приходить равномерно или одновременно после рассылки. Они могут читать готовые страницы либо активно перебирать фильтры, искать товары и оформлять заказы. Для оборудования это разные события.

Испытание должно воспроизводить путь покупателя. Полезно задать несколько сценариев: просмотр каталога, поиск, изменение фильтров, добавление в корзину, оформление заказа. Их доли берут из аналитики магазина или из явно обозначенного прогноза. Затем нагрузку постепенно увеличивают и наблюдают, где начинают расти задержки и ошибки.

Одного среднего времени недостаточно. Допустим, в условном испытании большинство обращений завершается быстро, а небольшая часть зависает надолго. Среднее может выглядеть приемлемо, хотя для тех, кому не повезло, магазин уже неудобен. Поэтому отдельно смотрят на p95 — время, в которое уложились примерно 95% измеренных обращений, — и на самые медленные операции. Принцип задания таких критериев описан в документации Grafana k6.

У каталога и оформления заказа должны быть отдельные результаты. Если объединить их в одну общую цифру, большое количество быстрых просмотров может скрыть проблемы на кассе. Кроме времени проверяйте долю ошибок, корректность цены, сохранение заказа и поведение при повторном нажатии кнопки. Успешный HTTP-ответ ещё не доказывает, что бизнес-операция выполнена правильно.

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

Результатом должна стать короткая запись: при такой версии приложения, таком наборе данных и такой нагрузке выбранный тариф выполняет согласованные требования. Она полезнее обещания «сервер на миллион посетителей», потому что её можно повторить после обновления.

Резервные копии и перенос магазина на выделенный сервер

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

В SCARAB, ANKH и PYLON по приведённым карточкам указан один накопитель. Из этого нельзя делать вывод о наличии зеркала. Если проекту нужно пережить отказ диска с минимальным перерывом, конфигурацию хранения и порядок восстановления придётся согласовать отдельно.

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

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

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

Сервер в России или США: локация и полная стоимость аренды

SCARAB, ANKH и PYLON из этого сравнения находятся в США. Для американской аудитории это естественное направление проверки. Если большинство покупателей в России, сначала измерьте задержку из их регионов и оцените размещение приложения ближе к ним. CDN может ускорить доставку изображений и других общих файлов, но обращения к корзине и базе заказов всё равно проходят свой путь.

В российской линейке указан CARTOUCHE: два Xeon E5-2680 v4, суммарно 28 ядер, 128 ГБ DDR4 и два SSD по 600 ГБ за $295 в месяц. Его можно включить в сравнение для российского магазина, однако по одному количеству ядер сопоставлять его с современными Ryzen нельзя. Это другая платформа, другие накопители и иной баланс ресурсов. Выбор страны размещения также должен учитывать допустимые условия обработки данных покупателей — этот вопрос решают до переноса рабочей базы.

Финальная сумма включает аренду, хранение копий, администрирование, платное программное обеспечение и резервные мощности, если они нужны. Сравнивать её полезно со стоимостью обеспеченной работы. Дополнительные $100 за PYLON имеют смысл, если проверенный прирост помогает выдержать нужную нагрузку. Если оформление тормозит из-за сторонней службы, те же $100 могут не изменить ничего.

Для финансовой оценки считайте не только выручку, но и валовую прибыль с сохранённого заказа. Выручка выглядит эффектнее, однако не вся она остаётся магазину. Более подробный подход есть в статье о цене одного заказа в инфраструктуре интернет-магазина.

Практический выбор для начала получается таким: ANKH — первый кандидат на испытание при подходящей локации и понятной потребности в выделенном сервере; SCARAB — вариант для доказанно меньшей нагрузки; PYLON — следующий шаг, когда полезной работе не хватает именно процессорных ресурсов. Если ограничение находится в памяти, дисках или отказоустойчивости, нужно менять соответствующую часть системы.

Покупателю не обязательно знать, какой процессор обслужил его корзину. Хорошо, когда он вообще не замечает сервер: выбирает товар, нажимает кнопку один раз и получает подтверждение заказа.

Подберите конфигурацию для своего проекта

Характеристики, стоимость и условия подготовки выделенных серверов MAATRIX в России и США.

Сравнить конфигурации в США

Все материалы о выделенных серверах

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →