Анкета для регистрации интернет-ресурса
В соответствии с Указом Президента Республики Беларусь № 60 от 01.02.2010г.
Техподдержка
Приложение support.by

E-mail: ticket@support.by

 

Портал > База знаний > Bitrix > Оптимизация производительности сайта на Битрикс


Оптимизация производительности сайта на Битрикс




Скорость сайта на Битрикс зависит от оптимизации компонентов сайта (вопрос разработчиков), набора модулей, оптимизации серверного ПО и достаточного количества ресурсов сервера.

1. Снижение нагрузки на диск:

В большинстве случаев, чтобы повысить производительность, нужен анализ текущей нагрузки на сервере. Для этого достаточно воспользоваться утилитами top, htop, iostat.В свою очередь на скорость загрузки сайта, помимо параметров сервера где расположен сайт, влияет нагрузка на сайт со стороны роботов различных сервисов и спам-ботов. Поэтому, очень полезно запретить нежелательным “посетителям” заходить на ваш сайт.

Для проверки текущих обращений к сайту в лог-файле доступа сервера Apache можно воспользоваться командой:

#tail -f /var/log/httpd/site_name_access_log

Для проверки количества всех обращений служит команда:

#cat /var/log/httpd/site_name_access_log | grep SemrushBot | wc -l

Запрещать доступ ботам будем при помощи nginx, для этого в конфигурационный файл каждого виртуального хоста в директриву server добавляем следующее условие:

#if ($http_user_agent ~* SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|

Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru) {return 444;}

 

2. Настройка базы данных MySQL

 

Оптимизация работы с базой данных для MySQL-версии продукта является одной из важнейших стратегий в оптимизации системы в целом, так как продукт активно работает с базой данных.Основным недостатком MyISAM с точки зрения производительности является блокировка на уровне таблицы при выполнении тех или иных операций. В результате, при большой нагрузке MySQL именно MyISAM таблицы становятся основным узким местом в системе, мешая увеличивать утилизацию машины и число обрабатываемых запросов. Это также приводит к увеличению времени работы страницы за счет ожидания используемых таблиц на уровне MySQL. Рекомендуется переводить все таблицы в формат данных InnoDB.

Создаем дамп базы данных и создаем ее копию:
#mysqldump -u root --opt -R database > database.sql && cp database.sql database_backup.sql

Переводим все таблицы в формат данных InnoDB:
#find database.sql -type f -exec sed -i 's#MyISAM#InnoDB#g' '{}' \;

Заливаем дамп базы данных:
#mysql -u root database < database.sql

Сервер баз данных Mysql читает конфигурацию из следующих файлов /etc/mysql/conf.d/bvat.cnf, /etc/my.cnf. При этом настройки в файле /etc/mysql/conf.d/bvat.cnf конфигурируются CMS автоматически при загрузке сервера в зависимости от количества ресурсов сервера. Поэтому настройки можно изменять в файлах /etc/mysql/conf.d/z_bx_custom.cnf и /etc/my.cnf. В большинстве случаев автоматические настройки не требуют корректировки, но если сервер начинает уходить в своп, то следует уменьшить размер буферов.

Копируем текущие настройки Mysql в файл /etc/mysql/conf.d/z_bx_custom.cnf:
#cat /etc/mysql/conf.d/bvat.cnf > /etc/mysql/conf.d/z_bx_custom.cnf

Открываем файл /etc/mysql/conf.d/z_bx_custom.cnf:
[mysqld]
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 16M
innodb_buffer_pool_size = 5120M
max_connections = 85
table_open_cache = 14336
thread_cache_size = 128
max_heap_table_size = 256M
tmp_table_size = 256M
key_buffer_size = 96M
join_buffer_size = 18M
sort_buffer_size = 18M
bulk_insert_buffer_size = 2M
myisam_sort_buffer_size = 18M

Так как MyISAM таблицы не используются устанавливаем минимальные значения для query_cache:
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M

Важнейшей настройкой MySQL при работе с InnoDB является innodb_buffer_pool_size, устанавливается по принципу "чем больше, тем лучше". Рекомендуется выделять до 50 — 60 % от имеющейся памяти на сервере:
innodb_buffer_pool_size = 5120M

Установка большого размера innodb_log_file_size может привести к увеличению быстродействия, при этом увеличится время восстановления данных, выберите от 258M до 1G.

Внимание! При изменении параметра innodb_log_file_size остановите MySQL, сделайте резервную копию файлов ib_logfile<x> (файлы чаще всего в /var/lib/mysql/), измените значение параметра innodb_log_file_size и запустите MySQL. В результате MySQL создаст новый лог-файл указанного в конфигурации размера.

Также необходимо снизить размеры буферов:

key_buffer_size = 32M
join_buffer_size = 1M
sort_buffer_size = 16M

Изменяем значение innodb_flush_log_at_trx_commit = 0Переносим временные файлы Mysql в оперативную память — в файле /etc/my.cnf указываем tmpdir = /dev/shmЗначение innodb_open_files и table_open_cache рассчитывается как количество таблиц во всех базах, умноженное на 2, ориентировочно рекомендуем устанавливать обе опции в 4096 или 8192.

table_open_cache = 4096
innodb_open_files = 4096

 

Количество потоков ввода/вывода файлов в InnoDB задается опциями innodb_read_io_threadsinnodb_write_io_threads, обычно этому параметру присваивается значение 4 или 8, на быстрых SSD-дисках установите в 16. Значение innodb_thread_concurrency установите в количество ядер * 2.

innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_thread_concurrency = 32

 

После внесения всех изменений перезапускаем mysqld:

systemctl restart mysqld или service mysqld restart

Часто возникющая проблема - не меняется параметр table_open_cache из-за неверных системных лимитов в самой ОС.Изменяем значение LimitNOFILE:

vi /usr/lib/systemd/system/mysqld.service LimitNOFILE = 50000

 

Применяем значение:

# systemctl daemon-reload # systemctl restart mysqld Изменяем лимит открытых файлов в системе: vi /etc/security/limits.conf root soft nofile 100000 root soft nofile 100000 # ulimit -n 100000

 

После внесения всех изменений перезапускаем mysqld:

systemctl restart mysqld или service mysqld restart

 

3. Оптимизация изображений

Для оптимизации изображений на сервере используем jpegoptim и optipng.Перейдем в директорию с сайтом и выполнить следующие команды:

find . -type f -iname '*.jpg' -exec jpegoptim --strip-all {} \;
find . -type f -iname "*.png" -exec optipng -strip all -o4 {} \;


4. Оптимизация в административной части CMS Битрикс

4.1. Тестируем производительность

Перейдите в панель производительности: Настройки → Производительность → Панель производительности. Нажмите кнопку Тестирование производительности» и подождите несколько минут.



4.2. Переход на версию PHP 7+

Прирост производительности от перехода на версию PHP c 5+ до 7+ составляет порядка 40 %. Уточните перед переходом у разработчиков может ли работать сайт на новой версию PHP.


4.3. Настройка кеширование

При использовании автокомпозита или композита обязательно необходимо настроить кеширование:

 

  • Если товары на сайте обновляются вручную или несколько раз в неделю.
    Рекомендуемое время кеширования: не менее 172800 секунд (2 суток).
  • Если товарны на сайте обновляются один раз в день, выгрузка из 1С или другой системы складского учета происходит ночью.
    Рекомендуемое время кеширования: 86400 секунд (1 сутки)
  • Нечасто, но бывает: цены обновляются через реал-тайм обмен с 1С и бывает, что несколько раз в течение дня.
    Рекомендуемое время кеширования: 7200 секунд (2 часа).

 



4.4. Создание индексов в базах данных

Переходим в Настройки → Производительность → Индексы → Анализ индексов.
Нажмите на кнопку «Выполнить анализ собранных SQL запросов».  Если появившиеся индикаторы зеленые, все в порядке: индексы созданы. Если индикаторы желтые, создайте их самостоятельно.
Инструкция Битрикс https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=32&LESSON_ID=3798

 



4.5. Отключаем неиспользуемые модули

Какие модули используются редко и их можно отключить без последствий для работы сайта:

  • AD/LDAP интеграция (ldap)

  • Push and Pull (pull)

  • Wiki (wiki)

  • А/B-тестирование (abtest)

  • Веб-аналитика (statistic)

  • Веб-кластер (cluster)

  • Веб-мессенджер (im)

  • Веб-сервисы (webservice)

  • Дизайнер бизнес-процессов (bizprocdesigner)

  • Документооборот (workflow)

  • Календарь событий (calendar)

  • Конструктор отчетов (report)

  • Менеджер идей (idea)

  • Мобильная платформа (mobileapp) - если не подключено мобильное приложение

  • Мобильное приложение для интернет-магазина (eshopapp) - если не подключено мобильное приложение

  • Обучение (learning)

  • Перевод (translate)

  • Почта (mail)

  • Техподдержка (support)

  • Универсальные списки (lists) 

  • Управление масштабированием (scale).

Как это сделать: перейдите в настройки модулей Рабочий стол → Настройки → Настройки продукта → Модули.

 

 

4.6. Настройка CDN

Включается здесь : Настройки → Облако 1С-Битрикс → Ускорение сайта (CDN). Необходимо тестировать опытным путем, так как может отрицательно влиять на скорость загрузки сайта.

 



4.7. Объединение и сжатие CSS и JS-файлов

В настройках главного модуля «Оптимизация CSS» устанавливаем необходимые галочки.



4.8. Оптимизируем базу данных

Переходим в Настройки — Инструменты — Диагностика — Оптимизация БД.

 



Помог ли вам данный ответ?

Добавить в избранное Добавить в избранное    Распечатать статью Распечатать статью

Также читают
Оптимизация работы MySQL (просмотров: 2818)

Powered by WHMCompleteSolution