Подтвердить что ты не робот

Как подсчитать открытые соединения db?

Я разрабатываю веб-приложение с использованием сервлета Java для доступа к Mysql db, как я могу получить количество подключений к моей базе данных, которая в настоящее время открыта?

Изменить:

Я попробовал "show processlist", это показало мне: 2695159, но это не так, я просто разрабатываю этот новый проект, я единственный пользователь, не мог запустить столько процессов, что хочу количество пользователей, получающих доступ к моей проектной БД, а не к числу всех пользователей db, а только к тем, которые вошли в мою базу данных, которая имеет только одну таблицу.

4b9b3361

Ответ 1

В зависимости от вашей версии MySQL вы можете выполнить выбор на

SELECT COUNT(*) FROM information_schema.PROCESSLIST;

и вы можете сделать where между пользователем, базой данных и IP-адресом хоста.

Например:

USE information_schema;
SELECT COUNT(*) FROM PROCESSLIST WHERE db ="mycase" AND HOST LIKE "192.168.11.174%"

Ответ 2

Вы можете использовать команду MySQL show processlist для получения количества подключений.

Однако это также покажет вам любые подключения, сделанные с тем же идентификатором пользователя, к базе данных, которые могут не поступать из вашего сервлета.

В общем, я бы предположил, что вам, вероятно, лучше использовать объект Connection Pool (см. http://java-source.net/open-source/connection-pools) для управления вашими подключениями к сервер MySQL. Это может повысить производительность, заставив подключения DB постоянно, поэтому у вас не всегда есть накладные расходы на новое подключение к DB для каждой загрузки страницы.

Если ваш сервлет должен знать количество подключений, то ваш пул соединений должен прийти с помощью метода, который сообщает вам, сколько соединений в настоящее время активно.

Ответ 3

показать статус как "Threads_connected" или показать глобальный статус, например "Threads_connected"

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

вы можете даже проверить Threads_running только просмотр текущих потоков (например, не спать).

Ответ 4

Запустите следующий запрос, в нем перечислены имя хоста и нет. соединений от каждого хоста:

SELECT host, count (host) FROM information_schema.processlist GROUP BY host;

Ответ 5

показать список процессов

Ответ 6

Вы можете выбрать только Information_Schema.Processlist данные, которые принадлежат вам. Это означает, что вы можете использовать его для мониторинга ТОЛЬКО, если вы вошли в систему под учетной записью root, иначе вы увидите соединения, исходящие от вашего пользователя, с которым вы вошли.

Если вы хотите правильно контролировать SQL, это будет:

SELECT variable_value
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE variable_name='threads_connected'

Ответ 7

Вы можете использовать этот

ПОКАЗАТЬ ГЛОБАЛЬНОЕ СТАТУС; или показать глобальный статус, например "Threads_connected";

из состояния "Подключения" вы можете узнать общее количество подключений.

Ответ 8

Вы также можете считать открытое соединение, показывая статус из Threads_connected имя переменной, как это:

SHOW STATUS WHERE variable_name = 'Threads_connected';

Или вы также можете подсчитать список процессов непосредственно из information_schema.PROCESSLIST, как показано ниже:

SELECT COUNT(*) FROM information_schema.PROCESSLIST;