Мониторинг используемых подключений в mysql для отладки "слишком большого количества соединений"

На сервере производства LAMP я иногда получаю ошибку "слишком много соединений" от MYSQL, я хочу добавить мониторинг, чтобы выяснить, является ли причина превышением предела максимальных подключений.

Мой вопрос: как я могу запросить из mysql или из mysqladmin текущее количество используемых соединений? (Я заметил, что статус show дает полные соединения, а не используемые в настоящее время.)

Ответы

Ответ 1

Очень мощный инструмент для мониторинга MySQL - innotop. Вы можете найти его здесь:

https://github.com/innotop/innotop

В Debian Lenny это часть пакета mysql-client-5.0, и я думаю, он доступен и для других дистрибутивов. Он особенно эффективен при мониторинге внутренних компонентов InnoDB, но также обеспечивает общий мониторинг сервера.

В режиме "Переменные и состояние" он контролирует переменные "Соединения" и "Макс_соединения" (среди прочих). Он отображает абсолютные и инкрементные значения - последний может дать вам представление о текущих соединениях.

Поскольку innotop предоставляет неинтерактивный режим, вы можете легко создавать полностью автоматизированный мониторинг, вызывая innotop из некоторых настраиваемых скриптов, nagios-проверок или любой другой системы.

Ответ 3

SHOW STATUS не отображает общее соединение: оно отображает текущие соединения. Вы получаете сообщение об ошибке слишком большого количества соединений, когда количество открытых подключений (бездействия или нет) ограничивает лимит, установленный для сервера.

Из вашего комментария о SHOW STATUS, похоже, что у вас на вашем сервере много простоя. Это указывает на неправильное использование постоянных соединений; некоторые библиотеки, которые утверждают, что поддерживают постоянные соединения, не обрабатывают их должным образом, и они имеют тенденцию открывать новые соединения, даже если доступны свободные соединения.

Узнайте, какое приложение выполняет такие запросы и настройте его на использование постоянных подключений.

Ответ 4

Чтобы получить общее количество параллельных подключений, разрешенных MySQL, вы должны проверить

show variables like 'max_connections'

и сколько одновременных подключений в настоящее время можно измерить с помощью

show status like 'max_used_connections'

Вы должны контролировать эти переменные. Если вам нужен коммерческий инструмент, который отслеживает важные показатели MySQL, вы можете попробовать MySQL Enterprise Monitor, MONyog и т.д.

Ответ 5

Вам может быть проще получить "Администратор MySQL" , отсюда вы можете легко отслеживать, откуда используются используемые соединения. См. Здесь об connections, используемом...