Оптимизация работы сайта и сервера под 1С-Битрикс для повышения быстродействия
Заказать услугу: ""
Содержание с переходом
- Создаем полную резервную копию 1С-Битрикс
- Временное закрытие публичной части сайта
- Очистка файлов кеша
- Уменьшаем размер кэша меню
- Пройти проверку сайта
- Проверка БД
- Оптимизация БД
- Переводим все таблицы в InnoDB
- Проверяем конфигурацию
- Проверяем настройки 1С-Битрикс
- Устанавливаем тип хранения кэша
- Включаем автокеширование компонентов
- Включаем морфологический поиск и быстрый поиск
- Запускаем монитор производительности на полчаса
- Исправляем "ошибки разработки"
- Закешируем компоненты
- Переводим инфо-блоки в режим хранения свойств в отдельных таблицах
- Отключаем эмуляцию виртуальной системы
- Исключаем из поискового индекса служебные запросы
- Отключаем сбор данных "Пути по сайту"
- Отключаем фиксацию числа показов баннеров
- Выключаем хранение сессий в БД
- Подключайте CSS и JS через API
- Пробуйте еще варианты оптимизировать и ускорить сайт
- Полезные статьи для оптимизации Битрикс
Создаем полную резервную копию 1С-Битрикс
Делаем для того, чтобы смогли откатить изменения, если что-то пойдет не так.
- Перейдите в раздел /bitrix/admin/dump.php?lang=ru
- Укажите место и настройки для сохранения копии сайта
- Кликните "Создать резервную копию"
- Дождитесь окончания архивации
Временное закрытие публичной части сайта
Если сайт в публичном доступе, то посетители могут помешать сбросить до нуля кэш и не только в последующих шагах оптимизации 1С-Битрикс
- Перейдите в раздел /bitrix/admin/settings.php?lang=ru
- Прокрутите вниз до раздела " Служебные процедуры"
- Закройте доступ для посетителей
Очистка файлов кеша
Часто тормоза и чрезмерная нагрузка на сервер, является не правильно сгенерированный кэш с повреждениями, исчерпание доступного места этим кэшем, неправильно настроены права на папки с кэшем. Следующая ошибка показывает случай исчерпания свободного места
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-интерфейс (панель администратора Битрикс)
- Перейдите в раздел /bitrix/admin/cache.php?lang=ru
- Перейдите на вкладку "Очистка файлов кеша"
- Нажмите на кнопку "Начать"
- Дождитесь окончания очистки кеша
Через SHH-клиент (опасный метод)
- Очистите папки "/bitrix/cache/ " и "/bitrix/managed_cache/"
- Выполните запрос в MySQL "TRUNCATE TABLE b_cache_tag"
- Повторить действия для WEB-интерфейса
Уменьшаем размер кэша меню
Часто выявляется большой размер папки с кэшем меню "/bitrix/managed_cache/MYSQL/menu/" превышающий размеры самого сайта. Причиной является, что каждого меню создается отдельный кэш при разных ссылках для разных пользователей.
Если меню в разных директориях не меняется и не перестраивается, то задаем по одному кэшу для каждого меню в свойствах вызова компонента меню
"CACHE_SELECTED_ITEMS" => "N", // Не создавать кэш меню для каждой страницы
Если меню не меняется для разных пользователей, то не учитываем права доступа
"MENU_CACHE_USE_GROUPS" => "N", // Отключить учет прав доступа
Пройти проверку сайта
- Перейдите в раздел /bitrix/admin/site_checker.php?lang=ru
- Кликните на "Начать тестирование"
- Дождитесь окончания процедуры тестирования
- Исправьте ошибки
Проверка БД
- Перейдите в раздел /bitrix/admin/repair_db.php?lang=ru
- Кликните на "Проверить / восстановить таблицы"
- Дождитесь окончания проверки
Оптимизация БД
- Перейдите в раздел /bitrix/admin/repair_db.php?optimize_tables=Y&lang=ru
- Кликните на "Проверить / восстановить таблицы"
- Дождитесь окончания проверки
Переводим все таблицы в InnoDB
- Перейдите в раздел /bitrix/admin/perfmon_tables.php?lang=ru
- Прокрутите вниз страницы
- Кликните на "Для всех"
- Подтвердите выбор во всплыващем окне
- Из выпадающего списка выберите "Преобразовать в InnoDB"
- Кликните на "Применить"
- Дождитесь окончания конвертации
Проверяем конфигурацию
- Перейдите в раздел /bitrix/admin/perfmon_panel.php?lang=ru
- Выберите вкладку "Конфигурация"
- Проверьте значение "Конфигурация PHP"
- Выполните "Рекомендации"
Проверяем настройки 1С-Битрикс
Вид страницы зависит от редакции 1С-Битрикс.
- Перейдите в раздел /bitrix/admin/perfmon_panel.php?lang=ru
- Выберите вкладку "Битрикс"
- Выполните "Рекомендации"
Устанавливаем тип хранения кэша
Инструкция по настройке кеширования в статье Использование кеширования в оперативной памяти
Установка memcache в CentOS/RedHat/Fedora
Обновляем ОС:
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");
Включаем автокеширование компонентов
- Перейдите в раздел /bitrix/admin/cache.php?lang=ru
- Во вкладке "Кеширование компонентов" кликните "Включить автокеширование"
- Перейдите во вкладку "Управляемый кеш"
- Кликните на "Включить управляемый кеш"
Включаем морфологический поиск и быстрый поиск
- Перейдите в настройки модуля /bitrix/admin/settings.php?lang=ru&mid=search&mid_menu=1
- Перейдите во вкладку "Морфология"
- Отметьте галочку "Использовать морфологию"
- Перейдите во вкладку "Поиск"
- Отметьте галочку "Использовать быстрый поиск (с ухудшенным ранжированием)"
- Кликните на "Сохранить" внизу диалога
Запускаем монитор производительности на полчаса
- Перейдите в раздел /bitrix/admin/perfmon_panel.php?lang=ru
- Из выпадающего списка выберите "в течение 30 минут"
- Кликните на кнопку "Тестировать производительность"
- Дождитесь окончания процедуры тестирования
Исправляем "ошибки разработки"
- Перейдите во вкладку "Разработка"
- Кликните на ссылки в столбце "Ошибки разработки"
- Откроется информация по незакешированным компонентам
Закешируем компоненты
- Откройте публичную часть сайта
- Перейдите в режим редактирования
- Наведите курсор на область с компонентов
- Кликните по шестеренке
- Выберите тип кеширования "Авто + Управляемое"
- Время кеширования 36000000 (рекомендуемое значение для компонентов каталога)
- Уберите галочку "Учитывать права доступа" (если вывод не зависит от группы пользователя)
- Поставьте галоку "Кешировать при установленном фильтре"
Переводим инфо-блоки в режим хранения свойств в отдельных таблицах
- Выберите нужный тип инфо-блока /bitrix/admin/iblock_type_admin.php?lang=ru
- Откройте диалог редактирования инфо-блока
- Кликните на ссылку "изменить место хранения свойств"
- Дождитесь окончания процедуры конвертации
Отключаем эмуляцию виртуальной системы
- Перейдите в раздел /bitrix/admin/fileman_file_edit.php?path=%2F
- Найдите файл ".htaccess"
- В контексном меню выберите "Редактировать как PHP"
- Удалите строчки
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]
- Сохраните изменения
Исключаем из поискового индекса служебные запросы
Исключите из поискового индекса служебные запросы путем указания их в файле robots.txt. Открыть пример файла robots.txt. для 1С-Битрикс.
Отключаем сбор данных "Пути по сайту"
Наличие зависит от редакции 1С-Битрикс
Перейдите в настройки модуля /bitrix/admin/settings.php?lang=ru&mid=statistic&mid_menu=1
- Перейдите во вкладку "Настройка данных"
- Уберите галочку с пункта "Собирать данные для отчета "Пути по сайту"?"
- Кликните на "Сохранить" внизу диалога
Отключаем фиксацию числа показов баннеров
Наличие зависит от редакции 1С-Битрикс
- Прейдите в настройки модуля /bitrix/admin/settings.php?lang=ru&mid=advertising&mid_menu=1
- Активируйте галочку "Не фиксировать показы всех баннеров"
- Кликните на "Сохранить" внизу диалога
Выключаем хранение сессий в БД
Наличие зависит от редакции 1С-Битрикс
- Перейдите в раздел /bitrix/admin/security_session.php?lang=ru
- Кликните на "Выключить хранение данных сессий в БД модуля"
Подключайте 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');
Пробуйте еще варианты оптимизировать и ускорить сайт
- Включите/выключите ускорение сайта CDN в Облако 1С-Битрикс
- Настройте Композитный сайт
- Перейдите на последнюю версию PHP
- Подключайте JS и CSS через API битрикс
- "Оптимизация CSS" в "Настройках модуля". Кроме "Переместить весь Javascript в конец страницы", обычно приводит к неочевидным проблемам в работе сайта.
- Оптимизация вручную файлов JS, CSS, JPG, PNG, GIF
- Создайте Фасетный индекс для Инфоблоков
- Проанализируйте и создайте индексы в базе данных
- Оптимизируйте вызовы SQL-запросов в PHP, особенно в циклах
- Задействуйте в PHP $this->StartResultCache() и CPHPCache
- Отключите неиспользуемые модули
Полезные статьи для оптимизации Битрикс
Почему страница долго открывается?
Как сделать сайт быстрым
Оптимизация времени генерации страницы
Монитор производительности в работе
Низкая оценка производительности на мощном железе
Производительность сайта в картинках
Тормозит сайт. Как ускорить работу сайта?
Вопросы производительности Битрикс