Шпаргалка по оптимизации производительности сайта

  1. Провести замеры текущих показателей, чтобы сравнить исходные данные с результатами после внесения изменений
  2. Получить информацию о том, что занимает время при генерации страницы. Для этого следует использовать либо встроенные в CMS возможности , сторонние/внешние инструменты, либо придется написать их самостоятельно для для этой задачи.
  3. В целях экономии времени, следует попробовать найти те боттлнеки(bottleneck, бутылочное горлышко, узкие места производительности), устранение которых даст максимальный результат при как можно меньших трудозатратах. Например, если есть блок меню каталога, который генерится долго, но редко меняется, его можно обернуть в кеш, тем самым оперативно и значительно сократив нагрузку на сайт.
  4. На основе данные анализа нагрузки найти неиспользуемые возможности, которые создают нагрузку. Это могут быть модули или фичи CMS, которые включены по-умолчанию, но ни кем не используются. Такой фичей может оказаться модуль внутренней статистики CMS, которым никто никогда не пользовался, а нагрузка, которую он создает хорошо заметна под нагрузкой и место в БД отъедает порядочно, что увеличивает ресурсные аппетиты БД и размер слепка БД при бекапах.
  5. Проверить запросы отправляемые браузером серверу на основных типах страниц сайта. Часто из-за ошибки в JavaScript-коде, браузер отправляет лишние Ajax-запросы серверу, создавая дополнительную нагрузку.
  6. Проверить запросы, отправляемые браузером к серверу на предмет 404-ых ошибок. Например, если шаблон или контент страницы указывает на несуществующую картинку, CMS в ответ будет отдавать полноценную страницу сайта, тратя время на генерацию всех блоков, только для того, чтобы сказать, что страница не найдена.
  7. Найти пачки однотипных запросов к БД, отправляемых за одно открытие страницы. Это может быть признаком формирования SQL-запросов в цикле. Характерно для страниц с листингом товаров. Следует переписать генерацию списка товаров, чтобы использовать 1 запрос, который включит в себя все необходимые данные или прибегнуть к кешированию. Стоит учесть, что в ключ кеша может потребоваться внести какие-то данные, например, группа покупателей или размер скидки. Если этого не сделать, то в кеш лягут товары с ценой для одной группы покупателей, а видеть их будут все.

Bonus level: инструменты для анализа нагрузки

  • New Relic: на мой взгляд, самый мощный инструмент для анализа нагрузки. Показывает наиболее нагружающие транзакции (URL), разбивку нагрузки на странице, с количеством запросов к таблицам, внешним источникам и так далее. Есть пробный период, в рамках которого пользователям показывается крайне детальная информация, с помощью которой можно очень быстро вылечить тормозной сайт.
  • Opbeat.com это аналогичный предыдущему инструмент, хотя он на много проще NR. Есть бесплатный тариф на 500 000 событий(просмотров страниц) в месяц. Подойдет тем у кого не большой трафик. Информации меньше чем в NR, но инструмент не раз помогал находить и устранять боттлнеки.

Let the performance be with you!

Подпишитесь на новые статьи

Подпишитесь, чтобы получать новые статьи в числе первых!

Я не шлю спам. Отписаться можете в любое время! Powered by ConvertKit

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *