Назад | Перейти на главную страницу

Аналитика производительности через «плагины» СУБД или другое решение

Я работаю над продуктом для системного мониторинга, который в настоящее время ориентирован на производительность на системном уровне. Мы расширяемся до систем мониторинга баз данных. Прямо сейчас мы можем получить простую информацию о производительности из выбранной СУБД, такую ​​как количество подключений, скорость ввода-вывода диска, время ожидания блокировки и т. Д.

Однако нам действительно нужен способ измерения времени выполнения каждого запроса, поступающего в СУБД, без требуя, чтобы клиент реализовал мониторинг в коде своего приложения.

Вот некоторые возможные решения:

Другие проблемы включают "анонимизацию" SQL, т.е. получение чего-то вроде SELECT * FROM products WHERE price > 20 AND name LIKE "%disk%" и производство SELECT * FROM products WHERE price > ? AND name LIKE "%?%", хотя это не должно быть слишком сложно с умным синтаксическим анализом и регулярным выражением.

В основном мы фокусируемся на:

Есть ли какие-либо механизмы в стиле плагинов, которые мы можем использовать для любого из них? Или есть решение попроще?

Не существует универсального решения, применимого ко всем вашим базам данных. И попытаться измерить время ответа на запрос в Oracle очень сложно. Я не работал с анализом производительности для memcache / nosql dbs.

Для mysql есть mysqlproxy - которые можно легко написать по сценарию. Однако вы, вероятно, получите все необходимое из журнала медленных запросов (с нулевым порогом). Я использую модифицированную версию этот сценарий чтобы «анонимизировать» мои запросы.

Существуют (очень дорогие) инструменты, такие как Compuware client vantage, которые могут анализировать сетевой трафик и определять показатели производительности на различных уровнях (включая базу данных). Единственный сопоставимый бесплатный программный инструмент, о котором я знаю, это PastMon который (AFAIK) не обеспечивает глубокую проверку, необходимую для измерения времени отклика БД при постоянном TCP-соединении.

Хотя можно было бы получить все показатели, направив весь доступ через веб-сервисы, это приводит к задержке транзакции. Это верно для любой операции типа прокси, но будет особенно болезненно для непостоянных подключений через SSL.

Вы обдумывали, как вы собираетесь собирать / поддерживать / анализировать все эти данные? Возможно, вы захотите взглянуть на графит.

Какие типы клиентов вы используете? Прежде чем вы начнете просматривать базы данных, вы должны измерить ответные связи на клиенте - вам нужно только начать беспокоиться о производительности базы данных, если у вас есть проблемы с производительностью. А если клиентом является веб-браузер, то это гораздо более простая задача. Просто настройте свой веб-сервер на регистрацию времени ответа и начните смешивать данные. Вы даже можете добавить простые приспособления для измерения отклика страницы, что является гораздо лучшим показателем воспринимаемой производительности, например Бумеранг Yahoo