Что делать, если Битрикс тормозит. Битрикс тормозит
Свинья на реактивном приводе. Ускоряем Битрикс адекватными и неадекватными методами. Скорость сайта на Битриксе
Ускоряем Битрикс адекватными и неадекватными методами
Битрикс тормозит
Такое заявление мы часто слышим от руко…ногих программистов и их несчастных доверчивых заказчиков. Один несчастный человек назвал мне свой сайт "свиньей на реактивном приводе". Вроде и движок мощный, а летит как-то не туда.
В этой статье я решил описать десяток способов ускорить сайт на битриксе до разумных и приемлемых скоростей.
Приемлемым мы назовем открытие страницы за 1 секунду, либо быстрее.
Здесь мы не будем смотреть на Google Pagespeed. Тест, для которого 10кб CSS, вынесенные в отдельный файл, хуже, чем 200 килобайт, встроенных в страницу. Единственный тестер, которому можно доверять, это ваш собственный браузер при скорости интернета выше 2-3 мегабит.
Выделим 4 способа ускорить сайт
- Базовые настройки
- Оптимизация кода
- Лайфхаки настроек
- Кеширование и композит
И так, с чего начнем?
С обязательных тестов
Открываем страницу «панель производительности»
Нажимаем «тестировать производительность» и смотрим отчет. Тестировать конечно, нужно при отсутствии нагрузки, иначе данные будут сильно искажены.
Что здесь важно
Базовые возможности хостинга. Это время чтения, записи, отклика, SQL запроса
Если они сильно (в 5-10 раз) меньше эталонных, то поздравляю - у вас кривой хостинг, который сильно экономит на серверах. Такой хостинг смело меняем.
Идем дальше
Конфигурация PHP - ссылка «Рекомендации»
Здесь важны сами настройки. Большинство хостинг-платформ соответствуют рекомендованным параметрам Битрикс, но если вы настраивали сервер сами, то стоит привести его настройки в соответствие с рекомендациями. Также обратите внимание на то, установлен ли препроцессор PHP. Без него скорость системы будет существенно ниже.
Итог наших настроек - быстро работающие страницы админки. Если админ-панель открывается быстро, а страницы сайта - медленно, то поздравляю. Ваш код нуждается в отладке. Ей и займемся на следующем шаге.
Отладка кода
Список страниц, оказывающих максимальную нагрузку, легко получить на соответствующих вкладках в панели производительности, описанной выше.
Выбираем самую медленную страницу сайта. И нажимаем кнопку «отладка» в панели администратора
Теперь под каждым компонентом на странице появится время, за которое он генерируется и число SQL запросов, необходимое для этого. Страницу можно открыть в обычном режиме, а можно при помощи кнопки «сбросить кеш»
для отладки нам понадобится знать скорость генерирования страницы до кеширования и то, насколько хорошо на ней кешируются данные.
Начнем с времени генерирования страницы
Оно отображается внизу страницы. Если нажать на него, появится раскладка по времени, какой компонент сколько времени потребовал. Далее начинаем разбираться с наиболее затратными компонентами. Суммарно ваша страница при отключенном кеше должна генерироваться не более 1-1.5 секунды и тратить на это не более 200 sql-запросов.
Что обычно создает нагрузку при генерировании страницы
Первая и основная ошибка - SQL запрос, вложенный в PHP цикл. Например, ваш код или код компонента генерирует список товаров. PHP-код получает этот список и для каждого товара отдельным запросом извлекает цену. Это одна из самых распространенных ошибок. Если на странице допустим, 50 товаров и по каждому мы узнаем группу пользователя, цену для этой группы и 2-3 свойства, то на выходе уже 250 лишних запросов. А вы спрашиваете, почему сайт тормозил? :-)
Еще одна функция - расчет скидок. Сайт может иметь очень сложную систему скидок и если рассчитывать их для каждого товара и каждой группы пользователей при генерировании страницы, то счет запросов может идти на тысячи.
Базовые настройки
Тут разберу настройки, которые в разы наращивают требовательность системы к ресурсам.
Список свойств в выдаче. В любом компоненте в настройках можно настроить, какие именно свойства будут вытаскиваться из базы. Нужно в настройках отсечь все лишние.
Список цен в выдаче. Аналогичным образом оставляем только цены актуального пользователя.
Учитывать права доступа инфоблока. В большинстве случаев эта настройка в компонентах не нужна - она только тратит ресурсы системы.
Время кеширования. Это непростая настройка. Ее мы разберем чуть позже, потому что у нее довольно много подводных камней, в том числе делающих кеширование совершенно бесполезным.
Кешировать при установленном фильтре. Всегда включайте эту настройку, иначе с, при входе в товар, всегда будет рассчитываться заново список сопутствующих товаров. Это тоже лишняя рагрузка.
Лайфхаки
Ну если вы дочитали досюда, то значит вам реально надо. Значит вы хотите, чтобы сайт работал быстро и справится с этим обычными инструментами не получается.
Какие «узкие места» есть у Битрикса и как с ними бороться
Вложенность разделов
Если разделов более 2000, то при обращении к ним, система будет существенно тормозить. В этом случае лучше переделать структуру сайта. разбить корневые разделы на отдельные инфоблоки. В чем причина? В том, что битрикс выводит все разделы списком в формах редактирования элемента и в подборе элементов. Что и создает зверские тормоза.
Обращения в файловой таблице
Компонент каталога проверяет фото товаров по таблице файлов при каждом формировании страницы. Кастомизировав компонент, эту функцию можно отключить. Дает прирост скорости на 20-30%
Кеширование
Больная вещь в кешировании каталога состоит в том, что так называемый «управляемый кеш» битрикса живет ровно до ближайшей записи в инфоблок. А после этого - стирается. А теперь представим себе, что сайт работает достаточно активно и изменения в товарах (приходы, расходы), происходят почти непрерывно. Можно считать, что на таком сайте вообще нет кеша. Какие варианты решения?
Написать свои компоненты для наиболее нагруженных узлов сайта. Например, для структуры разделов сайта. Эти компоненты будут кешироваться вне зависимости от управляемого кеша инфоблоков.
Отключить управляемый кеш. После этого компоненты будут кешироваться ровно на время, указанное в настройках. Будьте внимательны к этим настройкам :-)
И о приятном
Композитный сайт
Реально. Ускоряет. В 10 раз.
Если вы не поленитесь его настроить (а это довольно просто), то сайт начнет буквально «летать». Только важно - он не заменяет нормального кеширования компонентов. Он работает только если это самое кеширование уже корректно настроено.
Завершу статью небольшим чек-листом на работу битрикс ускорения
- Настройки в мониторе производительности соответствуют рекомендуемым
- Все компоненты настроены на кеширование
- SQL-запросы не вызываются в циклах
- Страница формируется с функцией «Очистить кеш» не более чем 200 SQL-запросами
- Компоненты работают только со свойствами, которые им нужны
- Проверка прав доступа отключена там, где не нужна
- Если на сайте много скидок, сайт рассчитывает их только там, где нужно
- Кеширование фильтров включено
- При кешировании учитывается периодичность обновления
- Настроен композитный сайт
Если при всем этом сайт все еще «тормоз» - добро пожаловать к нам.
Быстро, дорого, эффективно :-)
iarga.ru
Диагностика сайта
Диагностика сайта
1 300 ₽
Уменьшение скорости работы сайта, расположенного на CMS 1С-Битрикс, или же его низкое быстродействие ещё с момента сдачи проекта, могут быть вызваны множеством причин. Ими могут быть географически далеко расположенные хостинги, чрезмерно объёмный контент, а также ошибки и недоработки разработчика.Скорость сайта — комплексный показатель комфортности работы с сайтом для посетителей. Он учитывает качество разработки сайта, качество хостинга и доступность сайта по сети. Рассчитывается для 1000 последних посетителей сайта. Из статистики не учитывается 200 самых медленных показателей, на них списываются заходы на сайт с помощью медленного мобильного интернета или тех, у кого есть проблемы с быстродействием браузера.
Модуль поэтапно покажет, сколько времени занимает получение страницы пользователем. Именно по этим показателям считается Скорость сайта: • DNS — время выполнения запроса DNS для страницы • подключение к серверу — сколько времени компьютер пользователя устанавливает соединение с сервером • ответ сервера — время обработки сервером запроса пользователя (включая время реакции сети для местоположения пользователя). • загрузка HTML — время загрузки HTML страницы без ресурсов (картинки, CSS, Javascript) • обработка HTML — время, в течение которого браузер обрабатывал содержимое страницы (синтаксический анализ HTML, CSS, обработка элементов JavaScript и отображение страницы) после загрузки её с сервера и до начала отрисовки • отрисовка страницы — время от начала перехода на страницу до появления её на экране.
По полученным данным в диаграмме, можно сделать вывод, на каком этапе возникла задержка. К примеру, если она на последних двух пунктах, есть вероятность, что проблема лежит в контенте, расположенном на странице.
В противном случае, проблема состоит в быстродействии самого сайта. Подобные проблемы могут возникнуть по целому ряду причин. Выяснить, в чём именно причина медленной работы сайта, поможет статья Медленная работа Битрикс.
Отсутсвие компетенции разработчиков это наиболее распространенная проблема. Разработка была поручена программисту который ранее не работал с CMS Битрикс и процесс велся с отключенным кэшированием, а после того как работа была завершена включил кэширование и оказалось, что где то поехала верстка, а в некоторых местах вообще отсутствуют фрагменты сайта. Так и сдал сайт с отключенным автокешированием.
и привязал всю логику в шаблоны стандартных компонентов. И чтобы выполненные им работы начали выполнять свои функции — отключил автокеширование. После его включения половина сайта может перестать работать. переработка сайта.
seo-robotic.ru
Битрикс тормозит, ускорить работу битрикс
К сожалению, очень часто от пользователей битрикса можно слышать о том, что эта система требует много ресурсов и тормозит. Рассмотрим наиболее вероятные причины, по которым битрикс может тормозить:Битрикс тормозит из-за:
- Кеширование отключено или неправильно настроено.
- Ошибки программирования: «тяжелые» запросы к базе данных не кешируются и выполняются на каждом хите, ошибки при написании php-кода.
- Недостаточно ресурсов на сервере.
- Объемный html, выдаваемый системой, ошибки верстки, большие изображения.
Внизу страницы отобразится информация о времени выполнения страницы и количестве запросов к базе данных, эта информация может дать ответ на вопрос, почему битрикс тормозит. К примеру, такой результат может свидетельствовать о отключенном механизме кеширования:
В идеале, запросов к БД должно быть 0. Очень часто в процессе разработки программисты сознательно отключают кеширование компонентов, проверить это можно здесь: рабочий стол – настройки продукта – автокеширование
Возможно, для восстановления проблемы, связанной с тем что битрикс тормозит, достаточно просто включить автокеширование. Включение автокеширования вполне может ускорить работу битрикс.
Ошибки программирования
В данном случае можно говорить о том, что на сайте явно допущены ошибки в проектировании, но сервер более-менее справляется, обработав более 1200 запросов к БД за 1,86 сек. Как правило, сайт с отключенным кешированием создает 2-3 запроса к БД, за редким исключением > 10 запросов. В данном случае ругать систему за то, что битрикс тормозит, глупо.
Недостаточно ресурсов на сервере Как и любая другая система, битрикс может тормозить из за нехватки ресурсов сервера. Если вы используете виртуальный хостинг, вам необходимо будет связаться с техподдержкой для решения этой проблемы. Очень часто вам предложат перейти на специальный тариф, специально разработанный под CMS Битрикс, но не торопитесь этого делать. Свяжитесь с нами, мы поможем вам установить точно причину тормозов, и проконсультируем что делать.
Объемный html, выдаваемый системой, ошибки верстки, большие изображения Неправильная HTML-верстка сайта может также создавать видимость торможения битрикса, однако в данном случае система не при чем. В случае проблем с версткой на нашем сайте, мы поможем вам переверстать сайт и ускорить работу битрикс. Также возможно, что причина «тормозов» в слишком больших изображениях, выдаваемых системой. Обращайтесь к нам, все проблемы легко решаемы.
www.bbitrix.ru
гибкость, удобство… тормоза. Проблема и решение
— Как сделать так, чтобы инфоблоки не тормозили? — Не использовать инфоблоки. Подслушано.
Бизнес-процессы Битрикс24 позволяют быстро и относительно просто автоматизировать повторяющиеся последовательности действий.
Можно легко вносить изменения и поддерживать сотни процессов. Однако при большом объеме данных (тысячи записей, сотни полей данных, десятки запущенных заданий) бизнес-процессы работают все медленнее. Еще медленнее работают отчеты по лидам, задачам и собственным надстройкам.
Это естественная расплата за гибкость и простоту.
Мы нашли способ устранить этот недостаток — перевести все отчеты на highload-блоки Битрикс, оставив в живых бизнес-процессы.
Поехали.
Что такое бизнес-процессы в Битрикс24 мы уже рассказывали в постах Бизнес-процессы в CRM и Где искать бизнес-процессы в Битрикс24 и как ими управлять . Бизнес-процессы можно запустить на любом элементе CRM или на элементе инфоблока. Но что делать, если данных в инфоблоках так много, что страницы с поиском и отчетами открываются по 10-15 секунд? Как ускорить ИБ, сохранив бизнес-процессы в проекте?
Как работают с системой
Наш заказчик — коллекторское агентство. Клиентов у компании много, по каждому собрана подробная информация (более 70 полей в карточке клиента) и ведутся десятки документов. Битрикс 24, как и положено для проекта такого калибра — коробочный.
Пополняется и обновляется база клиентов из нескольких источников:
- импорт из файлов;
- заполнение вручную;
- выгрузки из 1С.
Одна из важнейших функций — поиск карточек дел должников по фильтру (более 50 параметров). В день в среднем совершается 71865 поисков (это 3-4 поиска в секунду в рабочие часы). Когда клиент обратился к нам, страница результатов поиска загружалась за 15 секунд.
Запись данных в БД происходит намного реже — соотношение где-то 10 операций чтения к 1 операции записи.
Компания растёт и набирает новых клиентов, планируется много новых функций Битрикс24, что только увеличит нагрузку.
Что решено предпринять
После анализа проблемы выработали три возможных решения:
-
рефакторить и оптимизировать инфоблоки;
-
отказаться от инфоблоков в пользу чего-то быстрого;
-
оставить инфоблоки для бизнес-процессов, а чтение и фильтрацию доверить чему-то быстрому.
Рефакторить и оптимизировать инфоблоки
Первым делом, возникла мысль заняться рефакторингом кода и оптимизацией ресурсов. Однако, вскрытие показало, что проект вполне здоров с точки зрения кода. Покупкой нового железа проблема тоже не решалась. Усердная оптимизация определенно дала бы ускорение на 10-15%, и то не надолго. Данных с каждым днем становится больше, продолжают появляться новые поля, поэтому замедление фильтрации и поиска по инфоблокам все равно не заставит себя долго ждать.
Отказаться от инфоблоков в пользу чего-то быстрого
В принципе, проблема “инфоблоки тормозят” давно ни у кого не вызывает бурных эмоций. В большинстве случаев проблему решают переходом на highload-блоки (ведь они для того и нужны) или свои таблицы. В новом ядре D7 есть быстрое API, их развивают и всё вроде бы хорошо... но бизнес-процессы с хайлоад-блоками не работают.
Отказаться от бизнес-процессов нельзя. Для 9 из 10 дел должников постоянно запущен какой-либо БП. Они многошаговые, глубоко проникли в рабочий процесс компании и могут тянуться годами. Почти все задачи в портале для сотрудников заказчика выставляются автоматически через БП.
Оставить инфоблоки для бизнес-процессов, а чтение и фильтрацию доверить чему-то быстрому
Тогда появилась идея ввести “разделение труда”: пусть поиск работает по highload-блокам (раз они такие быстрые), а бизнес-процессы работают с инфоблоками. Данные должны храниться одновременно в инфоблоках и в highload-блоках и поддерживаться в актуальном состоянии. “ Денормализация - друг оптимизатора ”.
Чтобы перевести проект на highload, нужно было:
-
воссоздать в highload-блоках структуру ИБ со всеми полями и связями;
-
конвертировать данные;
-
адаптировать интерфейс;
-
наладить синхронизацию данных.
Создавать HL-копии инфоблоков можно было бы сделать вручную, но в нашем случае в каждом из 9 инфоблоков хранится в среднем по 30 тысяч элементов. Плюс записи в инфоблоках связаны друг с другом. Если предположить, что у человека пересоздание записи с 20 свойствами займёт 1 минуту, то на 30 тысяч уйдет 500 часов. И это только на один инфоблок.
Поэтому, для переноса структуры и данных был написан небольшой конвертер, который не только создавал highload-блок, добавлял в него все нужные поля, но и копировал записи. Сильно облегчило задачу то, что при добавлении записи в highload-блок можно указывать ее ID, что позволило перенести данные “1 в 1”, сохранив целостности связей без изменения привязок по ID.
Переписывать код интерфейса глобально не пришлось. Вся работа с данными была скрыта в паре классов, так что заменили только “начинку”, почти не меняя html.
Наладка синхронизации
Простой переход на highload-блоки ускорил чтение и фильтрацию в 5 раз. Тут и началось самое интересное. Нужно было синхронизировать все, что происходит в highload-блоках с инфоблоками и наоборот. Любое изменение как со стороны пользователя, так и со стороны 1С должно обновлять инфоблоки, чтобы Бизнес-процессы всегда работали с актуальной информацией, а каждое изменение данных бизнес-процессом должно быть сразу доступно для работы пользователю.
Решалась такая задача с помощью событий Битрикс24 и привязки каждого элемента highload-блоков к элементу-дублеру в инфоблоках. При возникновении события удаления, добавления или обновления элемента в HL или ИБ, происходит поиск дублера и синхронизация всех новых данных. Делать это нужно внимательно и аккуратно, чтобы избежать зацикливания событий, срабатывающих всякий раз при изменении.
После всего проделанного, мы получили прирост скорости выполнения фильтрации и чтения данных в 5 раз. Выборка, для которой страница грузилась до 15 секунд теперь отрабатывает за 2,5-3. Мы даже добавили по просьбе клиента новые, ещё более сложные фильтры, а скорость работы практически не изменилась. А вот операции записи пострадали: новое дело создается за 4 секунды против прежних 1-1.5, потому что запись происходит и в ИБ, и в HL, а также осуществляются дополнительные проверки на зацикливание, вызовы обработчиков и пр.
Графики “до-после для чтения и записи”
Но этому можно было помочь. После перехода на highload-блоки в инфоблоках дублировалась вся информация из highload-блоков, а нужна только та, которая задействована в бизнес-процессах. Оставалось только “облегчить” инфоблоки удалением “лишних” свойств (в некоторых ИБ таких была почти половина). Чистку проводили вручную, каждое поле пришлось анализировать и проверять, где и как используется, обсудить с заказчиком будущие бизнес-процессы, однако все это помогло ускорить работу с записью данных. Дело, которое создавалось 4 секунды, стало создаваться за 2-2.5 (Как все-таки свойства инфоблоков сильно замедляют работу...).
Графики “до-после для чтения и записи” после удаления свойств ИБ
Это лишь один из примеров сложных доработок Битрикс24, которые мы делаем. Любую задачу можно решить, если правильно к ней подойти и применить соответствующие компетенции .
Ваш Битрикс24 тормозит и мешает быстро выполнять задачи? — Обращайтесь к нам, решение обязательно найдется!
Оцените статью:
Спасибо, ваш голос успешно добавлен!
www.intervolga.ru
Скорость и цена сайта на 1С-Битрикс
В этой статье я решил разобрать основные мифы про Битрикс и показать на примере их несостоятельность.
1. Битрикс тяжелый сложный, в нем много ненужных функций, которые мешают работать сайту
Вопрос: у кого из читателей смартфон? Подозреваю, что у всех, кто-то даже читает с него эту статью.
Вопрос номер два: кому слишком «умный» телефон мешает по нему звонить? Лично мне наоборот, помогает. Проще искать контакты на хорошем дисплее с удобной экранной клавиатурой, чем на кнопочной с Т9.
С движком аналогично. Чем он умнее и больше всего умеет, тем удобнее работать с основными функциями, ради которых все и берется.
И еще одна важная вещь. Это российский движок, а значит все тысячи функций заточены под особенности российского рынка и имеют русскоязычную техподдержку.
2. Битрикс тормозит
Именно с этого начинают все «сам себе программисты» свою критику.
Тут проще всего показать статистику. Благо, в Битриксе есть специальный сервис, который меряет скорость полной загрузки страницы.
Вот этот сайт (neoclimat-zvi.ru ) считается «быстрым»
Скорость открытия - полсекунды.
А вот это (novayagollandiya.ru) - уже по мнению Битрикса «не быстро».
Обратите внимание, "не быстро" - это одна целая и 5 сотых секунды.
Причем, это средняя скорость полного открытия страницы, включая загрузку фото.
Вывод простой - «тормозит» у «тормозов». Если разработчик представляет себе, с чем работает и знает, как решать там задачи, ничего тормозить не будет.
3. Битрикс легко взломать
Однажды ко мне пришел заказчик вместе со штатным программистом. И в процессе обсуждения нового сайта зашла речь о безопасности. И тут программист выдал «да мы Битрикс этот на раз ломаем». Я сразу же предложил ему 100 000 (сто тысяч) рублей, если он взломает сайт Студии. Оказалось, что он «имел в виду не то и вообще…». А заказчик в итоге подписал с нами контракт.
Это простой пример, который иллюстрирует 2 факта:
- Битрикс наиболее защищенная из всех CMS на российском рынке;
- единственная, чья безопасность подтверждена сертификатами ФСБ и проверялась на хакерском конкурсе.
Проверено хакерами на CC2009
На фестивале хакеров CC9 компании «1С-Битрикс» и Positive Technologies о организовали конкурс, участникам которого было необходимо обойти систему «Проактивной защиты» сайта и воспользоваться заранее подготовленными уязвимостями разных типов. С задачей конкурса – обойти фильтр «Проактивной защиты» (Web Application Firewall) и проэксплуатировать заранее подготовленные на сайте уязвимости (SQL-Injection, Cross-Site Scripting, Path Traversal и Local File Including) – пытались справиться более 600 специалистов. В течение двух суток работы фестиваля было зарегистрировано и отражено более 25000 атак. http://www.1c-bitrix.ru/about/life/news/171346/
Более того, это единственная CMS, которая оснащена модулем защиты, перехватывающим попытки взлома, которые мог пропустить программист при создании модулей. Аналогов на данный момент нет.
4. Битрикс дорогой и за него нужно постоянно платить
Постоянно платить не нужно. Если вы хотите получать обновления и облачные сервисы после года работы, то, разумеется, это платно. Но никто не заставит вас платить, если вы их не хотите.
Что же касается понятия «дорогой», то Битрикс для интернет-магазина стоит, как месяц работы программиста. По сути это всего несколько процентов от бюджета создания и продвижения хорошего магазина.
Стоит ли жертвовать этой суммой ради скорости, безопасности, и огромного функционала, специально заточенного под российскую интернет-торговлю, решать вам.
5. И немного юмора по теме
Магазин - технически сложный продукт. И попытка разработать его на непрофильном движке обычно выглядит примерно так.
iarga.ru