Задать вопрос

Bitrix. Mysql жрет процессор как не в себя. Куда копать?

Имеется интернет магазин на Bitrix управление сайтом. редакция бизнес.

В инфоблоке 170 тыс. элементов , 2000+ секций, 2000+ свойств. нагрузка: 10-40 обращений в минуту.

top показывает что mysql постоянно потребляет 500-600% (5-6 ядер).

/bitrix/admin/perfmon_db_server.php?lang=ru жалуется на
"Процент временных таблиц потребовавших создание на диске (Created_tmp_disk_tables / (Created_tmp_tables + Created_tmp_disk_tables)). Процент более 30% и требуется увеличить параметры tmp_table_size"

Запросы к СУБД выполняются относительно быстро (В show processlist практически пусто. Попытка сопоставить thread и запросы в нем выполняющиеся согласно статьи тоже ничего не дала )

Попытка средствами bitrix найти где можно создать/изменить/удалить индексы ничего не дала. (Выигрыш в несколько процентов на конкретных редких запросах не считается значимым результатом)

если оставить 90 тыс позиций - нагрузка на процессор падает больше чем втрое. (mysql ест 3 ядра максимум. среднее значение : 60-200%)

суть вопроса: как проверить почему нагрузка на процессор так зависит от количества элементов в инфоблоке? (кто виноват: сам фреймворк, установленное готовое решение, или настройки субд )

(Если проблема в mysql по пожалуйста поделитесь правилом по которому надо рассчитывать значение параметров tmp_table_size и max_heap_table_size. Или хотя бы верхней границей , выше которого ставить значения параметров смысла нет)
  • Вопрос задан
  • 954 просмотра
Подписаться 4 Средний 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
если оставить 90 тыс позиций - нагрузка на процессор падает больше чем втрое.
Есть мысль что большое количество запросов происходит минуя индексы, которые возможно вообще отсутствуют. Первое что приходит на ум - залогировать все запросы, выбрать типовые и прогнать их ручками через explain. Заодно и посмотреть что там в плане памяти жрется.
Так же стоит посмотреть движок таблиц, может там какой-нить майисам или вообще свой особый, бывало такое.
Ну и возможно у вас где-то вызовы запросов вообще без лимитов, это вполне может сожрать и проц и память подчистую.

нагрузка: 10-40 обращений в минуту.
Это вообще ниачем. В купе с мизерной базой размером меньше миллиона записей на таблицу, такая нагрузка действительно вызывает удивление...
Ответ написан
electroid
@electroid
Нужно проверить что все компоненты на страницах сайта корректно кешируются, проверить страницы компонента каталог и другие страницы. Это можно посмотреть через отладку в верхнем меню на странице сайта.
Также можно потестировать производительность в панели производительности в админке (покажет какие страницы создают нагрузку).
К сожалению без кеширования никакая оптимизация не поможет решить проблему производительности и cpu. Система тянет много тяжелых запросов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы