Я хотел бы иметь тест (читай: все, что можно отправить по почте), в котором всякий раз, когда наш запрос занимает больше 2 секунды выполнить, он отправит мне письмо.
Если это имеет значение, мы используем cakePhp с CircleCi и PhPUnit. У нас также есть три базы данных, Первый — это производство, второй — разработка, а третий — test_database.
Каков наилучший подход к этой проблеме? Есть ли приложение, которое может проверить это?
Вы можете включить медленный журнал запросов (прочитай это) на вашем сервере MySQL.
Этот подход будет генерировать ложные положительные отчеты: будет отображаться множество разовых запросов, которые превышают медленный порог запроса. Но это предупредит вас о медлительности как в запросах ты знаешь Возможные проблемы и те, ты не знаешь Возможны проблемы. Последняя категория наиболее болезненна.
Есть способы генерирования электронных писем и элегантных отчетов из медленного журнала запросов; Ваш любимый поисковик найдет эти инструменты. Но будьте осторожны с электронными письмами; они похожи на пресловутого мальчика, который слишком часто кричал «волк».
Лучше всего использовать mysqldumpslow
один раз в день или два, и ищите запросы, производительность которых ухудшается.
Более сложный подход — определить время пиковой нагрузки. Например, во многих бизнес-приложениях 10:00 — 12:00 каждый рабочий день является временем пиковой нагрузки. Затем следите за медленными запросами во время этих окон.
Если ты хочешь быть действительно Сложно, вы должны пытаться отслеживать только самый медленный дециль каждого отдельного запроса — 10% его прогонов, которые занимают самый длинный. Зачем? Среднее время запроса, или даже среднее время запроса, обманчиво. Это выбросы — когда запрос выполняется очень медленно — это
а. раздражать ваших пользователей.
б. выявить различные узкие места системы.
Работа с индексированием и настройкой для ваших запросов, которые имеют самый медленный дециль, является отличным способом для настройки вашей системы.
Но будьте осторожны: я могу почти гарантировать, что ваш начальник и ваш менеджер по продукту не поймут этот подход. Вам придется много объяснять, пока они не начнут видеть результаты.
Других решений пока нет …