Мы предоставляем услугу ИТ аудита «1С-Битрикс» –сервис аудита производительности сайтов. Наша команда провела множество аудитов и анализов эффективности сайтов. Зачастую, по итогам проверок все проблемы типичны. Кроме анализа настроек и конфигураций, мы анализируем код. Изучаем варианты его изменения для повышения скорости.
Производительность сайта зависит:
- от оптимальности настроек;
- от уровня хостинга.
Анализ производительности сайта включает:
- проверку верного алгоритма работы сервера;
- проверку верной настройки сервера и мощностей;
- анализ скорости загрузки проекта в браузере.
Аудит конфигурации сервера
Обязательным этапом аудита является проверка синхронизации raid массива, его наличие и процедуру резервного копирования. Нередко всплывает отсутствие бекапов данных. Далее проверяется производительность в разрезе следующих условий:
- где расположен сайт – на виртуальном хостинге или виртуальной машине. Мы рекомендуем, при наличии возможностей, выделенный сервер. Разница в стоимости между виртуальным и реальным выделенным сервером может быть очень большой, но, если речь идет о серьезном проекте, нужно оценивать риски.
- версии программного обеспечения. Если код оптимален, то переход на более новые версии ускорит время генерации страниц на 30%.
- оптимизатор PHP кода должен быть установлен
- отладчик XDebug должен быть отключен, потому что предназначен для отладки кода и гораздо замедляет время выполнения кода
- проверка engine таблиц в MySQL. Для типовых задач мы рекомендуем использовать InnoDB и его походные вместо My ISAM, который часто подвержен блокировкам на уровне таблицы и очень чувствителен к падениям MySQL.
- правильность настроек InnoDB. Речь идет о настройке размера buffer pool.
- оценка работы сервера и использования SWAP-A. Оптимизация будет неэффективна, если сервер не справляется с нагрузкой от большого количества запросов или процессам не хватает памяти, и они частично выгружены в swap. Процессы очень динамично используют оперативную память и в случае выгрузки на диск – дисковая подсистема сервера резко достигает своего предела и сайт «зависает». Поэтому необходим мониторинг сервера для выявления причин «зависания».
Аудит кода объекта
Промониторив вопросы, связанные с хостингом, обратимся к коду. Бывали случаи, когда в корректно настроенной схеме, проблема была не в коде, а в надстройках. И при поиске проблем необходимо знать какие инструменты вы сможете использовать и какую информацию вы сможете получить на выходе.
В инструменте 1С-Битрикс мы используем монитор производительности для первичной проверки. Для его включения на административной панели кликаем «Меню» – «Настройки» – «Панель производительности» – «Тестировать производительность». По завершению процесса на панельке «Разработка» появятся данные со статистикой посещенных страниц и временем их отклика.
Далее, на основе данных можно проанализировать время генерации отдельных элементов и на что следует обратить внимание.
Для запуска отладки необходимо в панели администратора выбрать пункт «Отладка» и в меню выбрать «Суммарная статистика». В случае надобности проверки работы кэша, поставить галочку «Детальная статистика кэша».
Иногда этой информации недостаточно. Это бывает в случаях, когда элементы кода не попадают в режим отладки или необходимо более детальное изучение.
Давайте изучим режим «Отладки» и модуля профилирования XHProf, позволяющего отследить время выполнения PHP скрипта и вложенных функций на примере странички каталога. Рассмотрим проблему: при включенном кэшировании компонент Bitrix:catalog.selection медленно выполняется.
- Заметно, что компонент не кэшируется и выполнение очень замедлено.
- Для отладки PHP воспользуемся XHProf.
- Обновляем страничку для сбора данных утилитой XHProf
- Открывает страницу с данными XHProf
- Выполнение шаблона компонента Bitrix:catalog.selection происходит за 1,5 сек. И это большая часть времени генерации всей страницы.
Ищем подключение необходимого компонента Bitrix:catalog.selection. Открываем и смотрим. - Смотрим далее и видим вызов скрипта result_modifier.php. Если пройти дальше, то можно увидеть пользовательскую функцию, в которой исполняются запросы:
Приходим к выводу, что причиной медленной загрузки страницы является result_modifier.php.
Айдит конфигураци «1С-Битрикс»
- Некорректная структура инфоблоков. Наиболее популярная проблема. Характеризуется тем, что все товары и их свойства перемешаны в пределах одного блока. Поэтому выборка будет осуществляться медленно.
- Самописные компоненты. При использовании сторонних компонентов нужно их изучать, т.к. они не учитывают возможности 1С –Битрикс и могут значительно увеличивать время исполнения.
- Проблемы с внешними сервисами. Клиенты часто используют такие сервисы как обновление курса валют либо стоимость доставки товаров. Увы, многие внешние сервисы отвечают долго. Один из вариантов решения проблемы – загрузка данных через Cron.
- Проблемы с фасетными индексами. Этот элемент обязательно необходимо использовать т.к. он значительно снижает нагрузку на процессор и время загрузки страниц.
- Ошибки применения API 1С-Битрикс. 1С-Битрикс имеет набор оптимальных функций для нагрузки на сервер, нужно лишь знать, как их применять. Популярной ошибкой оказалось получение перечня товаров и подсчет их количества по имеющимся свойствам. У API 1с-Битрикс для этого есть функционал.
- Проблемы с генерацией меню. В масштабных проектах формирование меню может быть проблемным из-за подсчета количества компонентов в секциях. Мы не рекомендуем подобное решение для оптимизации скорости.
- Включенный антивирус. Антивирус – очень эффективный инструмент, но обычно оставляют активным только проактивную защиту. Веб- антивирус в выключенном состоянии ускоряет генерацию страницы на 150-200 мс.
Загрузка станиц при включенном антивирусе:
С выключенным антивирусом
- Установленный модуль компрессии. Рекомендуем отключать, если это возможно.
- Проверка кода на наличие «Агентов на хитах». Мы не рекомендуем их использовать. При проверке кода, обязательно сначала проверяется не включены ли агенты на хитах.
- Неверно настроенное кеширование. При проверках, мы сталкивались с ситуациями, когда кеширование сначала отключили, затем провели отладку и забыли включить. Пожалуйста, не забывайте включать.
- Проблемы с композитным кэшем. Наиболее популярная ошибка – это установленный лимит на кэш в 100 Мб, хотя этого недостаточно.
Аудит клиентского сегмента
- Изображения без оптимизации. Мы не рекомендуем загружать ёмкие изображения. Подключите автоматические инструменты для оптимизации изображений.
- Проблемы с JS/CSS файлами. Здесь лидирует два вида ошибок: подключение JS/CSS файлов нестандартным для 1С-Битрикс способом и использование необъединенных JS/CSS файлов.
- Отдача статики WEB сервером Apache. Часто наблюдается, что статические файлы отдаются через Apache, с которого обычно раздается динамика. И каждый запрос создает нагрузку на процессор. Мы рекомендуем раздачу статистики через nginx.
- Отсутствие компрессии на уровне WEB –сервера. Статику необходимо отдавать с gzip компрессией.
Скорость загрузки сайта получает возрастающую значимость. Мы стремимся к тому что бы быстрых сайтов было больше. Рекомендуем Вам использовать инструменты платформы 1С-Битрикс эффективно и наши рекомендации помогут в решении проблем.
Нужна помощь в аудите и оптимизации производительноcти Битрикс, обращайтесь, [email protected]