Анализ slow query log для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Анализ slow query log для 1С-Битрикс
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Анализ slow query log для 1С-Битрикс

Slow query log — журнал MySQL/MariaDB, в который сервер записывает запросы, выполнявшиеся дольше заданного порога. Это первый инструмент диагностики, когда сайт Битрикс работает медленно, а конкретные виновники неизвестны.

Включение и настройка

В my.cnf (или my.ini на Windows):

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 0.5
log_queries_not_using_indexes = 1
min_examined_row_limit = 100

long_query_time = 0.5 — запросы дольше 500 мс. Для активной диагностики ставьте 0.1 или даже 0. log_queries_not_using_indexes = 1 — ловит запросы без индексов независимо от времени. min_examined_row_limit = 100 — не логировать быстрые запросы по маленьким таблицам.

Без перезапуска MySQL можно включить динамически:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 0.5;
SET GLOBAL log_queries_not_using_indexes = 1;

Анализ через mysqldumpslow и pt-query-digest

Сырой лог читать неудобно. Используйте утилиты агрегации:

mysqldumpslow — встроен в MySQL:

mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

-s t — сортировка по суммарному времени, -t 10 — топ 10 запросов. Показывает шаблон запроса и суммарное/среднее время.

pt-query-digest (Percona Toolkit) — значительно информативнее: показывает процентиль времени выполнения, количество уникальных запросов, нагрузку на сервер.

Что ищем в логе Битрикс

Типичные паттерны медленных запросов в Битрикс:

  • SELECT ... FROM b_iblock_element WHERE IBLOCK_ID=N без индекса или с ORDER BY SORT без составного индекса
  • SELECT ... FROM b_iblock_element_property WHERE VALUE LIKE '%текст%'LIKE с ведущим % не использует индекс
  • SELECT COUNT(*) FROM b_sale_order WHERE ... при нескольких миллионах заказов
  • Запросы к b_search_content без FULLTEXT-индекса при полнотекстовом поиске
  • Пересоздание фасетного индекса (b_iblock_find_*) при каждом изменении элемента

После нахождения конкретного запроса следующий шаг — EXPLAIN, который покажет, какой план выполнения выбрал оптимизатор и где добавить индекс.