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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Аналіз slow query log для 1С-Бітрікс
Проста
~2-3 робочих дні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Аналіз 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, який покаже, який план виконання вибрав оптимізатор та де додати індекс.