Перейти к содержимому
Облик

Разработка высоконагруженных проектов

Когда сайт падает под нагрузкой, первое желание — купить сервер помощнее. Иногда это помогает, но чаще проблема не в мощности, а в одном тяжёлом запросе, который выполняется на каждой странице и который никто не замечал, пока посещаемость была втрое ниже.

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

Обсудить задачу
Процесс

Как работаем

  1. 01

    Воспроизводим нагрузку

    Нагрузочное тестирование на копии с реальными данными. Без воспроизведения оптимизация делается вслепую.

  2. 02

    Ищем узкое место

    Профилируем приложение и базу. В большинстве проектов основное время уходит на несколько конкретных запросов.

  3. 03

    Чиним самое дорогое

    Индексы, лишние запросы в циклах, кеширование того, что не меняется. Обычно это даёт основной выигрыш.

  4. 04

    Добавляем слои

    Кеш, очереди для тяжёлых операций, вынос статики. Только после того, как код перестал быть проблемой.

  5. 05

    Проверяем повторно

    Тот же нагрузочный тест. Разница должна быть в цифрах, а не в ощущениях.

Ситуации

Типичные узкие места

  • Запросы в циклеКаталог, который на каждый товар делает отдельный запрос к базе. На сотне позиций это сотня запросов вместо одного.
  • Отсутствие индексовПоиск по полю, по которому база вынуждена перебирать всю таблицу. Заметно только при росте объёма.
  • Тяжёлые операции в запросе пользователяФормирование отчёта или отправка письма внутри обработки нажатия кнопки вместо фоновой задачи.
  • Кеш, который не работаетНастроен, но сбрасывается при каждом изменении любого товара, и потому бесполезен.
Вопросы

Что обычно спрашивают

Поможет ли просто увеличить сервер?

Иногда да, как временная мера перед известным пиком. Но если проблема в коде или запросах, рост железа даёт линейный выигрыш при экспоненциальном росте расходов.

Как понять, какую нагрузку нужно держать?

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

Можно ли протестировать до запуска рекламы?

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

Что если проблема в хостинге?

Скажем прямо и предложим переезд. Иногда самое честное решение — сменить площадку, а не оптимизировать код под её ограничения.

Сколько стоит?

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

Смежные страницы
Заявка

Расскажите, когда сайт ложится

В пик, при рассылке или постоянно. Замерим и найдём настоящую причину.

или напишите напрямую hello@versta.studio