guvijur
@guvijur
Практик, кинестетик, ретроград и консерватор

Как в среде Linux анализировать запросы к БД MySQL или почему может тупить запрос?

Доброго всем дня!

Есть некоторый корпоративный портал, поднятый на Apache + PHP в среде Linux CentOS 6.
На сайте используются фреймворки jQuery и Foundation. Портал на столько старый, что некоторые команды в коде PHP редактор кода PHPStorm подчёркивает и пишет, что это осуждается. Переделывать его никто пока не будет, вместо него планируется внедрить битрикс, но это отдельная печаль.

Теперь суть. Представьте себе модальное окно, где есть дри поля и кнопка "Выполнить".
Первая кнопка - "Регион", вторая - "Подразделение", третья - "Получатель задачи".
При выборе любого значения в поле "Регион" через AJAX посылается GET-запрос к серверу, который из БД MySQL по коду региона получает список подразделений и возвращает его. Этот код вставляется во второй select, который "Подразделение". С получателем задачи аналогично.
Так вот между выбором региона и получением списка подразделений проходит чертовски много времени, примерно секунд 6. Ещё 6 секунд на загрузку получателей задачи по выбору поля "Подразделение". Уже 12 секунд. Смешно, скажете вы? А теперь представьте что руководителю отдела надо распределить между подчинёнными 30 задач утром. Представили? Так-то это 6 минуты, не считая времени, которое тратится на то, чтобы зайти в каждую задачу, нажать кнопку "Переадресация" и временем загрузки модального окна, о котором я пишу. Грубо говоря, надо потратить в зависимости от количества задач от 10 до 15 и даже 20 минут, на распределение задач по отделу.
Короче бесит.
Стали разбираться и наткнулись на то, что тупит какой-то запрос в PHP к БД. Но отловить его не можем.

В связи с этим вопрос: Чем и как в Linux можно мониторить запросы к БД и их анализировать?

Я не самый крутой задаватель вопросов, поэтому отвечу на дополнительные уточняющие вопросы.
Заранее спасибо.
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Формируем MySQL slow log, по его результату делаем EXPLAIN. Делаем выводы из результата. Если что можно было - оптимизировали - возвращаемся в код и начинаем плакать за анализом написанной там бездумной лапши и оптимизировать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы