Слово траблшутинг состоит из Trouble - проблема, и shooting - стрельба. То есть траблшутинг - это отстрел проблем.

На любом сайте есть ошибки или "баги". Если ошибка приводит к тому, что сайт начинает работать медленно, это убивает маркетинг и SEO.

Рассмотрим, какие проблемы скорости сайта могут быть, и как их отстреливать.

Траблшутинг долгой загрузки сайта

Проблема 1: Google Page Speed показывает низкий результат

Траблшутинг Google Page Speed

Google Page Speed - показать комплексный, он объединяет сразу несколько метрик:

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

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

Кейс 1: количество очков 0-60. Обычно это говорит о множестве проблем в работе сайта. С другой стороны, прибавить сразу несколько баллов, довольно просто: можно брать любую, даже самую легкую рекомендацию от этого сервиса, и она принесет эффект. Важна также специфика проекта. Например, на развлекательном портале с кучей изображений и видео на главной, если их суммарный объем более 10 Мб, Page Speed будет равен нулю. Это не говорит о том, что сайт так плох. Просто такова специфика проекта, не будете же вы пережимать изображения до ужасного качества, чтобы вам засчитали очки.

Кейс 2: 60-80. Самый массовый случай. Обычно заключается буквально в двух-трех проблемах скорости. Решается сложнее, какими способами - читайте ниже.

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

Проблема 2. Виноват медленный сервер

Часто можно услышать суждение:

У вас медленный сайт, потому что дешевый хостинг. Переходите на более дорогой тариф и ваша проблема решится.

ваш хостер

Проблему медленного сервера можно пристрелить, купив VDS, если прошлый хостинг за 100-300 рублей действительно плохой. Я видел сайты, которые на хорошем шаред-хостинге работали быстрее, чем на VDS, и там дело было в отдельном высокоскоростном сервере баз данных.

Но всему есть предел, и действительно тормозной код "не полетит", сколько не плати за сервер.

Поясню на примере. Был процессор 2,0 ГГц, его проапгрейдили до 3,8 ГГц. Скорость работы памяти подняли с 10600 до 17066 Мбайт/сек (DDR3-2133). Другими словами, частота процессора увеличилась 3,8 / 2,0 = 1,9 раза, а скорость памяти в 17066/10600 = 1,6 раз. Скорость диска также увеличили, допустим, в 2 раза. Вопрос: во сколько раз увеличилась скорость работы веб-сайта на сервере?

Если вы решите перемножить показатели, то сильно ошибетесь. Допустим, проблема в медлительности сервера баз данных, что часто упирается в скорость работы жесткого диска. И процессор с памятью тут не сильно помогут, серверу придется "пошуршать" по диску, фильтрую данные. Наоборот, если база данных использует индексы, она будет работать быстро, в идеале 0,001 секунду. Но это уже программное решение, а не аппаратное. Новый сервер покупать не пришлось, вы экономите на постоянных отчислениях.

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

На конференциях по высокой нагрузке вы не услышите "как я собрал крутой сервер", а вот как мониторить, балансировать, масштабировать - таких тем много.

Как же отстрелить проблему? Попробуйте "разогнаться сервером". Не получилось? Наймите профильного программиста.

Проблема 3. Виновата медленная база данных

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

Решение: поиск медленных запросов к БД, затем отстрел проблемы: пистолетом - индексы, автоматом - переписывание запроса и логики приложения, тяжелая артиллерия: кеширование.

Проблема 4. Виноват медленный код

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

Просадку в скорости кода можно объяснить так:

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

Нужно переписать весь проект с нуля

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

Траблшутинг медленного кода:

  • ищем медленный участок
  • думаем, как обойтись минимальной кровью
  • переписываем участок, или оптимизируем базу, или кешируем
Траблшутинг медленной работы сайта

Траблшутинг от профи

Траблшутинг - это палочка-выручалочка бизнеса, когда на переделывание проекта нет средств, а время поджимает.

Порядок действий:

Вы связываетесь с нами и описываете суть проблемы. Что нужно:

Процесс: мы работаем над проблемой. Если проблема решена, вы ее оплачиваете.