Разве что кроссплатформенность на линукс официально заканчивается Ubuntu и Debian (распространяется в deb). Исходников не дают, так что пользователям Gentoo, Archlinux и др. не debian-based придётся немного по извращаться.
Нагруженный проект находится на сервере, а это приложение, как я понял, для отладки в процессе разработки, на локальной машине?!
Может знаете(подскажете) консольное решение? С Веб-интерфейсом?
Согласен с вами полностью, тоже было бы интересно глянуть на инструмент работающий на самом сервере(с нагруженным проектом) с любым интерфейсом (будь то веб-интерфейс или же иной).
У автора хотелось бы узнать, как вы смотрите на разделение приложения на front и back-енды (один — в качестве службы сбора информации на сервере, второй — обработка и визуализация данных на стороне клиента)?
Такой вариант уже предлагали реализовать, но проблема в том что приложение для пользователей сильно усложнится в настройке и понимании. К тому же аналоги именно с работой только на веб-сервере найти можно. Но работать они будут через консоль. Нам хотелось реализовать именно простое GUI приложение для девелопера, а не сисадмина.
Посмотрите как это сделано у, например, deluge. Простой пользователь и не догадывается о разделении на сервис и морду к нему и о том, что они могут работать на разных машинах.Ну и учесть, что аудитория у вас всё же не домохозяйки.
Мне как-то percona tools и анализ slow/bin логов ближе… Если не бин логи, можно tcp dump снимать и опять же в перкону отправлять. Но спасибо за ссылку.
UPD: Прикольно с разницей в 3 минуты написали с zoxa
:) А не подскажете программу, чтобы можно было сравнивать результаты pt-query-digest с разных дней. Или может какой нибудь график на их основе построить можно?
А у нас для percona исторически сложившийся велосипед из анализа SHOW GLOBAL STATUS и SHOW SLAVE STATUS на серверах.
Всё это дело центализованно собирается, аггрегируется и строятся симпатичные графики по времени/машинам/портам реплик и т.п. По типам запросов (Com_insert и т.п.), Connections/Threads_created/Slow_queries и т.д.
Плюс на уровне кода по каждому запросу проверяется время работы, и в случае злоупотреблений, логгируются все подробности: запрос, параметры, кто обратился, стек, «параметры среды» и т.п.
Начиная с версии 5.6 такие тулзы станут ненужными.
В субботу svetasmirnova проводила в рамках DevConf мастеркласс, как раз посвященный профайлингу с использованием PERFORMANCE_SCHEMA. В отличие от 5.5, в этой базе появилась куча новых таблиц, и информация, полезная не только разработчикам самого движка БД, но и обычному программисту/ДБА.
Я так понял, что это глобальная версия того, что раньше включалось по set profiling (но работало только для текущей сессии) в виде такой же абстракции базы данных, что и information schema, и позволяет с помощью SQL запросов в реальном времени получать информацию. в частности, к примеру, топ самых медленных запросов с ид сессии и хостом клиента, а так же море всякой другой информации. Собираюсь в ближайшее время пощупать локально.
То что вы говорите есть уже в последних релизах 5.5.
Запускается через команду PROFILE. Но дело в том что это не полноценный инструмент, а скорее первичное направление где пощупать на незнакомом сервере. В общем то даже в тяжеловестном Oracle встроенных функций для детального анализа не найти. Приходится использовать сторонние инструменты помогающие проводить полный анализ.
Как раз об этом и речь. Что этот прокси (как и show profile) покажет только для тех запросов, которые шли через него.
А новая PERFORMANCE_SCHEMA — глобальная для всего сервера, представляя из себя куда более мощный и гибкий show processlist и глобальный show profile.
В любом случае спасибо за за информацию — инструменты полезны любые, и чем их больше, тем лучше они становятся.
А не подскажете где можно почитать по подробней? Сам то я использую Percona Server 5.5 и там вроде performance_schema есть как вы и говорите. Но на боевом сервере как то не хочется играть особо.
Самое интересно, какая дополнительная нагрузка на сервер ложится из-за этого?
Боюсь, пока негде. Сам поискал — но не нашел. Надо либо самому копать, либо ждать, когда кто-нибудь напишет :)
Эта схема действительно появилась в 5.5, но только в 5.6 она стала полезной конечному разработчику. Количество таблиц увеличилось в 3 раза, а информация теперь в куда более доступной форме. Правда, речь про версию Оракла.
Я сейчас на память не очень помню, но в презентации фигурировала значительно более информативная версия show processlist (на базе запроса к этой новой схеме) и возможности онлайн-профайлинга.
С производительностью, боюсь, проблемы будут. Света говорила даже про какой-то скандал, связанный как раз с этой фичей, и с тем, что она повышает нагрузку на сервер при неправильном использовании. Тоже ещё предмет для будущих исследований и выработки рекомендаций.
Я некоторое время назад пользовал MySQL Proxy.
Сейчас уже не упомню, насколько глубоко, однако для профайлинга, логирования запросов, которые идут уже непосредственно на сервер базы — самое оно было. Скрипты для тех или иных операций пишутся на Lua, что довольно гибко.
Тем не менее, прекрасный инструмент, спасибо.
Удаленное профилирование возможно если соотвествующе настроено ваше приложение, MYSQL сервер и Neor Profile SQL. Важно понимать что инструмент работает как прокси — прокладка между СУБД и вашим приложением.
Получилось сделать так: в настройках Neor Profile SQL указываем параметры для подключения к удалённому серверу, а в настройках нашего приложения, в качестве сервера БД указываем: «localhost:4040» и всё. Включаем профилирование и работаем.
Интересный инструмент, но, к сожалению, не умеет работать с запросами, в которых база данных прописана. Неправильно их парсит.
Пример:
UPDATE `maidb`.`sessions` SET sid='783286272',last_used=1372427031 WHERE uid=1024
В статистику при таком запросе maidb попадает в раздел «Таблицы».
не сразу разобрался как он работает, 4040 порт и прочее… но прочитав тут всего одну фразу все понял. Все быстро настроил. Думаю на вашем сайте не хватает простой картинки объяснения «Важно понимать что инструмент работает как прокси — прокладка между СУБД и вашим приложением.», ибо после захода на сайт, и даже чтения FAQ это было не очень понятно. До сих пор пользовался Jet profiler, он подключается напрямую к базе и не нужно никаких прокси трюков, но она слишком дорогая.
П.С. соответственно, что бы не менять настройки в приложении, поменял порт базы на 4040, в самой Neor Profile прописал 3306. и вот они сессии! ))
Оптимизация MySQL запросов с помощью Neor Profile SQL