Оптимизация работы сайта и сервера под 1С-Битрикс для повышения быстродействия

Оптимизация работы сайта и сервера под 1С-Битрикс
  • 27.05.2022 22:47:42
  • 09.09.2015
  • 38401
  • 3.8
  • 0
  • Константин Винниченко

Содержание с переходом

  1. Создаем полную резервную копию 1С-Битрикс
  2. Временное закрытие публичной части сайта
  3. Очистка файлов кеша
    1. Через WEB-интерфейс (панель администратора Битрикс)
    2. Через SHH-клиент (опасный метод)
  4. Уменьшаем размер кэша меню
  5. Пройти проверку сайта
  6. Проверка БД
  7. Оптимизация БД
  8. Переводим все таблицы в InnoDB
  9. Проверяем конфигурацию
  10. Проверяем настройки 1С-Битрикс
  11. Устанавливаем тип хранения кэша
    1. Установка memcache в CentOS/RedHat/Fedora
  12. Включаем автокеширование компонентов
  13. Включаем морфологический поиск и быстрый поиск
  14. Запускаем монитор производительности на полчаса
  15. Исправляем "ошибки разработки"
  16. Закешируем компоненты
  17. Переводим инфо-блоки в режим хранения свойств в отдельных таблицах
  18. Отключаем эмуляцию виртуальной системы
  19. Исключаем из поискового индекса служебные запросы
  20. Отключаем сбор данных "Пути по сайту"
  21. Отключаем фиксацию числа показов баннеров
  22. Выключаем хранение сессий в БД
  23. Подключайте CSS и JS через API
  24. Пробуйте еще варианты оптимизировать и ускорить сайт
  25. Полезные статьи для оптимизации Битрикс

Создаем полную резервную копию 1С-Битрикс

Делаем для того, чтобы смогли откатить изменения, если что-то пойдет не так.

  1. Перейдите в раздел /bitrix/admin/dump.php?lang=ru
  2. Укажите место и настройки для сохранения копии сайта
  3. Кликните "Создать резервную копию"
  4. Дождитесь окончания архивации
Создание полной резервной копии

Временное закрытие публичной части сайта

Если сайт в публичном доступе, то посетители могут помешать сбросить до нуля кэш и не только в последующих шагах оптимизации 1С-Битрикс

  1. Перейдите в раздел /bitrix/admin/settings.php?lang=ru
  2. Прокрутите вниз до раздела " Служебные процедуры"
  3. Закройте доступ для посетителей
Временное закрытие публичной части сайта

Очистка файлов кеша

Часто тормоза и чрезмерная нагрузка на сервер, является не правильно сгенерированный кэш с повреждениями, исчерпание доступного места этим кэшем, неправильно настроены права на папки с кэшем. Следующая ошибка показывает случай исчерпания свободного места

	 Bitrix\Main\DB\ConnectionException] Mysql connect error [localhost, 127.0.0.1]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (400)

Если у вас нет такой ошибки, то лучше использовать метод через WEB-интерфейс.

Через WEB-интерфейс (панель администратора Битрикс)

  1. Перейдите в раздел /bitrix/admin/cache.php?lang=ru
  2. Перейдите на вкладку "Очистка файлов кеша"
  3. Нажмите на кнопку "Начать"
  4. Дождитесь окончания очистки кеша
Очистка файлов кеша

Через SHH-клиент (опасный метод)

  1. Очистите папки "/bitrix/cache/ " и "/bitrix/managed_cache/"
  2. Выполните запрос в MySQL "TRUNCATE TABLE b_cache_tag"
  3. Повторить действия для WEB-интерфейса
Удаление файлов кеша вручную

Уменьшаем размер кэша меню

Часто выявляется большой размер папки с кэшем меню "/bitrix/managed_cache/MYSQL/menu/" превышающий размеры самого сайта. Причиной является, что каждого меню создается отдельный кэш при разных ссылках для разных пользователей.

Если меню в разных директориях не меняется и не перестраивается, то задаем по одному кэшу для каждого меню в свойствах вызова компонента меню

	 "CACHE_SELECTED_ITEMS" => "N", // Не создавать кэш меню для каждой страницы

Если меню не меняется для разных пользователей, то не учитываем права доступа

	 "MENU_CACHE_USE_GROUPS" => "N", // Отключить учет прав доступа
Параметры компонента меню

Пройти проверку сайта

  1. Перейдите в раздел /bitrix/admin/site_checker.php?lang=ru 
  2. Кликните на "Начать тестирование"
  3. Дождитесь окончания процедуры тестирования
  4. Исправьте ошибки
Проверка сайта

Проверка БД

  1. Перейдите в раздел /bitrix/admin/repair_db.php?lang=ru
  2. Кликните на "Проверить / восстановить таблицы"
  3. Дождитесь окончания проверки
Проверка и восстановление таблиц

Оптимизация БД

  1. Перейдите в раздел /bitrix/admin/repair_db.php?optimize_tables=Y&lang=ru
  2. Кликните на "Проверить / восстановить таблицы"
  3. Дождитесь окончания проверки
Этап оптимизации таблицы

Переводим все таблицы в InnoDB

  1. Перейдите в раздел /bitrix/admin/perfmon_tables.php?lang=ru
  2. Прокрутите вниз страницы
  3. Кликните на "Для всех"
  4. Подтвердите выбор во всплыващем окне
  5. Из выпадающего списка выберите "Преобразовать в InnoDB"
  6. Кликните на "Применить"
  7. Дождитесь окончания конвертации
Преобразовать все таблицы в InnoDB

Проверяем конфигурацию

  1. Перейдите в раздел /bitrix/admin/perfmon_panel.php?lang=ru
  2. Выберите вкладку "Конфигурация"
  3. Проверьте значение "Конфигурация PHP"
  4. Выполните "Рекомендации"
Не оптимальная конфигурация PHP

Проверяем настройки 1С-Битрикс

Вид страницы зависит от редакции 1С-Битрикс.

  1. Перейдите в раздел /bitrix/admin/perfmon_panel.php?lang=ru
  2. Выберите вкладку "Битрикс"
  3. Выполните "Рекомендации"
Устранение проблем конфигурации PHP

Устанавливаем тип хранения кэша

Инструкция по настройке кеширования в статье Использование кеширования в оперативной памяти

Установка memcache в CentOS/RedHat/Fedora

Установка memcache

Обновляем ОС:

	 yum update

Выполняем установку memcached:

	 yum install memcached

Отредактируем файл конфиг

PORT="11211"
USER="memcached"
MAXCONN="256"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"

Где:

  • PORT 11211 является портом прослушивания по умолчанию для Memcached.
  • USER – это пользователь memcached от которого будет запущен демон.
  • MAXCONN – максимальные количество возможных соединений.
  • CACHESIZE  – это количество мегабайт (64 MB) для использования, если у вас есть много трафика, это хорошо для большинства малых/средних сайтов. Для загруженного сервера вы можете увеличить его на 512 или 1 Гб (1024 MB).
  • OPTIONS=”-l 127.0.0.1″ – это означает что memcached будет  слушать только на localhost-е, избегая каких-либо внешних подключений.  Вы можете установить IP-адрес сервера. По умолчанию он установлен в INADDR_ANY. Это важно опция, поскольку нет никакого другого способа обеспечить установку. Привязка к внутреннему или межсетевому интерфейсу предлагается.

Запуск Memcached

	 service memcached start

Ставим его в автозагрузку ОС

	 chkconfig memcached on

Устанавливаем PHP-расширение с Memcached.

	 yum install php-pear pecl_http php-devel pecl install memcache

Добавим модуль memcache.so module в php.ini

	 echo "extension=memcache.so" >> /etc/php.ini

Перезапускаем сервер apache

	 service httpd restart

Проверяем работу службы Memcached

	 echo "stats settings" | nc localhost 11211

Проверяем работу PHP-расширения, создаем файл php_info.php в корне сайта и ищем заголовок memcache

	 <?php phpinfo();?>

Проверяем установку Memcached как модуль PHP

	 php -i | grep memcache -i
Настраиваем фаэрвола для Memcached
	 iptables -A INPUT -p tcp --destination-port 11211 -m state --state NEW -m iprange --src-range 192.168.1.10-192.168.1.15 -j ACCEPT iptables -A INPUT -p udp --destination-port 11211 -m state --state NEW -m iprange --src-range 192.168.1.10-192.168.1.15 -j ACCEPT

Проверяем, запущен ли демон memcached на ОС:

	 ps -aux | grep memcached

Настраиваем 1С-Битрикс под кэш, в файле dbconn.php прописываем

	 define("BX_CACHE_TYPE", "memcache"); define("BX_MEMCACHE_HOST", "127.0.0.1");

Включаем автокеширование компонентов

  1. Перейдите в раздел /bitrix/admin/cache.php?lang=ru
  2. Во вкладке "Кеширование компонентов" кликните "Включить автокеширование" 
Настройки кеширования компонентов
  1. Перейдите во вкладку "Управляемый кеш"
  2. Кликните на "Включить управляемый кеш"
Настройка управляемого кеширования

Включаем морфологический поиск и быстрый поиск

  1. Перейдите в настройки модуля /bitrix/admin/settings.php?lang=ru&mid=search&mid_menu=1
  2. Перейдите во вкладку "Морфология"
  3. Отметьте галочку "Использовать морфологию" 
Настройки параметров морфологии
  1. Перейдите во вкладку "Поиск"
  2. Отметьте галочку "Использовать быстрый поиск (с ухудшенным ранжированием)"
  3. Кликните на "Сохранить" внизу диалога 
Настройки параметров поиска

Запускаем монитор производительности на полчаса

  1. Перейдите в раздел /bitrix/admin/perfmon_panel.php?lang=ru
  2. Из выпадающего списка выберите "в течение 30 минут"
  3. Кликните на кнопку "Тестировать производительность"
  4. Дождитесь окончания процедуры тестирования 
Тестировать производительность в течение 30 минут

Исправляем "ошибки разработки"

  1. Перейдите во вкладку "Разработка"
  2. Кликните на ссылки в столбце "Ошибки разработки"
  3. Откроется информация по незакешированным компонентам 

Закешируем компоненты

  1. Откройте публичную часть сайта
  2. Перейдите в режим редактирования
  3. Наведите курсор на область с компонентов
  4. Кликните по шестеренке
  5. Выберите тип кеширования "Авто + Управляемое"
  6. Время кеширования 36000000 (рекомендуемое значение для компонентов каталога)
  7. Уберите галочку "Учитывать права доступа" (если вывод не зависит от группы пользователя)
  8. Поставьте галоку "Кешировать при установленном фильтре" 

Переводим инфо-блоки в режим хранения свойств в отдельных таблицах

  1. Выберите нужный тип инфо-блока /bitrix/admin/iblock_type_admin.php?lang=ru
  2. Откройте диалог редактирования инфо-блока
Хранение свойств информационного блока
  1. Кликните на ссылку "изменить место хранения свойств"
  2. Дождитесь окончания процедуры конвертации 
Конвертер свойств ИБ

Отключаем эмуляцию виртуальной системы

  1. Перейдите в раздел /bitrix/admin/fileman_file_edit.php?path=%2F
  2. Найдите файл ".htaccess"
  3. В контексном меню выберите "Редактировать как PHP"
  4. Удалите строчки
	 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR] RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR] RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR] RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR] RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR] RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR] RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2} RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$ RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]
  1. Сохраните изменения

Исключаем из поискового индекса служебные запросы

Исключите из поискового индекса служебные запросы путем указания их в файле robots.txt. Открыть пример файла robots.txt. для 1С-Битрикс.

Отключаем сбор данных "Пути по сайту"

Наличие зависит от редакции 1С-Битрикс

Перейдите в настройки модуля /bitrix/admin/settings.php?lang=ru&mid=statistic&mid_menu=1

  1. Перейдите во вкладку "Настройка данных"
  2. Уберите галочку с пункта "Собирать данные для отчета "Пути по сайту"?"
  3. Кликните на "Сохранить" внизу диалога 

Отключаем фиксацию числа показов баннеров

Наличие зависит от редакции 1С-Битрикс

  1. Прейдите в настройки модуля /bitrix/admin/settings.php?lang=ru&mid=advertising&mid_menu=1
  2. Активируйте галочку "Не фиксировать показы всех баннеров"
  3. Кликните на "Сохранить" внизу диалога

Выключаем хранение сессий в БД

Наличие зависит от редакции 1С-Битрикс

  1. Перейдите в раздел /bitrix/admin/security_session.php?lang=ru
  2. Кликните на "Выключить хранение данных сессий в БД модуля" 

Подключайте CSS и JS через API

Пример подключения в HEAD

use Bitrix\Main\Page\Asset;
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/css/main.css');
Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/js/jquery.js');

Пробуйте еще варианты оптимизировать и ускорить сайт

  1. Включите/выключите ускорение сайта CDN в Облако 1С-Битрикс
  2. Настройте Композитный сайт
  3. Перейдите на последнюю версию PHP
  4. Подключайте JS и CSS через API битрикс
  5. "Оптимизация CSS" в "Настройках модуля". Кроме "Переместить весь Javascript в конец страницы", обычно приводит к неочевидным проблемам в работе сайта.
  6. Оптимизация вручную файлов JS, CSS, JPG, PNG, GIF
  7. Создайте Фасетный индекс для Инфоблоков
  8. Проанализируйте и создайте индексы в базе данных
  9. Оптимизируйте вызовы SQL-запросов в PHP, особенно в циклах
  10. Задействуйте в PHP $this->StartResultCache() и CPHPCache
  11. Отключите неиспользуемые модули

Полезные статьи для оптимизации Битрикс

Почему страница долго открывается?
Как сделать сайт быстрым
Оптимизация времени генерации страницы
Монитор производительности в работе
Низкая оценка производительности на мощном железе
Производительность сайта в картинках
Тормозит сайт. Как ускорить работу сайта?
Вопросы производительности Битрикс

Помочь с оптимизацией Битрикс за 15000 руб


Оценить статью

Рейтинг:
(3.83 из 5 - 6 голосов)