Как я могу узнать, сколько подключений MySQL открыто?
Как узнать, сколько соединений было открыто во время текущего запроса через mysql_connect
в PHP, запущенном на Apache?
Я знаю, что если я вызову mysql_connect
функцию 100 раз с теми же параметрами, она всегда вернет ту же ссылку соединения. Он не будет запускать новое соединение после того, как соединение уже существует.
Но я просто хочу убедиться, что mysql_connect
не запускает новый.
Я работаю с устаревшей системой, которая содержит много вызовов функций mysql_connect
.
Есть ли какой-либо параметр в Apache или есть ли способ зарегистрировать это количество подключений в файле журнала Apache или MySQL?
Ответы
Ответ 1
Я думаю, что есть несколько способов:
SHOW STATUS WHERE `variable_name` = 'Threads_connected'
или вы можете сделать SHOW PROCESSLIST
и узнать уникальные значения в столбце Id
. В старом PHP API mysql
есть функция mysql_list_processes
, которая также делает то же самое, что и SHOW PROCESSLIST
.
Но сначала нужно работать для вас. Возможно, вам захочется проверить другие переменные STATUS
Ответ 2
Существуют и другие полезные переменные в отношении соединений, а в вашем конкретном случае переменная Connections
может помочь выяснить, слишком ли сложен ваш код. Просто проверьте его значение до и после запуска кода.
# mysql -e 'SHOW STATUS WHERE variable_name LIKE "Threads_%" OR variable_name = "Connections"'
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Connections | 22742 |
| Threads_cached | 1 |
| Threads_connected | 87 |
| Threads_created | 549 |
| Threads_running | 51 |
+-------------------+-------+
-
<сильные > Соединения
Количество попыток подключения (успешно или нет) на сервере MySQL.
-
Threads_cached
Число потоков в кэше потоков.
-
Threads_connected
Число открытых в настоящее время подключений.
-
Threads_created
Число потоков, созданных для обработки соединений. Если Threads_created является большим, вы можете увеличить значение thread_cache_size. Скорость пропуска кеша может быть рассчитана как Threads_created/Connections.
-
Threads_running
Число нитей, которые не спят.
Ответ 3
Текущее состояние соединений:
mysqladmin status
Посмотрите на Threads:
count. Более подробную информацию о текущих соединениях можно получить с помощью команд:
[email protected]:~$ mysqladmin -uroot -ppass extended-status | grep Threads
| Threads_cached | 0 |
| Threads_connected | 3 |
| Threads_created | 3 |
| Threads_running | 1 |
[email protected]:~$ mysqladmin -uroot -ppass processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 53 | root | localhost | | Sleep | 258 | | |
| 54 | root | localhost | | Sleep | 253 | | |
| 58 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
FYI mysqladmin -v -uroot -ppass processlist
является аналогом show full processlist
.
Команды могут быть сокращены до любого уникального префикса и вызываться одновременно:
[email protected]:~$ mysqladmin -v -uroot -ppass proc stat
+----+------+-----------+----+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+-----------------------+
| 53 | root | localhost | | Sleep | 951 | | |
| 54 | root | localhost | | Sleep | 946 | | |
| 65 | root | localhost | | Query | 0 | | show full processlist |
+----+------+-----------+----+---------+------+-------+-----------------------+
Uptime: 1675 Threads: 3 Questions: 171 Slow queries: 0 Opens: 235
Flush tables: 1 Open tables: 57 Queries per second avg: 0.102
Ответ 4
Вы можете использовать команду MySQL show processlist, чтобы получить количество подключений.
Ответ 5
Я не думаю, что вы можете увидеть количество соединений, но можете ограничить соединения с сервером mysql.