Как я могу узнать, сколько подключений MySQL открыто?

Как узнать, сколько соединений было открыто во время текущего запроса через mysql_connect в PHP, запущенном на Apache?

Я знаю, что если я вызову функцию mysql_connect 100 раз с теми же параметрами, она всегда вернет ту же ссылку соединения. Он не будет запускать новое соединение после того, как соединение уже существует.

Но я просто хочу убедиться, что mysql_connect не запускает новый.

Я работаю с устаревшей системой, которая содержит много вызовов функций mysql_connect .

Есть ли какой-либо параметр в Apache или есть ли способ зарегистрировать это количество подключений в файле журнала Apache или MySQL?

Я думаю, что есть несколько способов:

 SHOW STATUS WHERE `variable_name` = 'Threads_connected' 

или вы можете сделать SHOW PROCESSLIST и узнать уникальные значения в столбце Id . В старой PHP API-интерфейсе mysql есть функция mysql_list_processes которая делает то же самое, что и SHOW PROCESSLIST .

Но сначала нужно работать на вас. Возможно, вам захочется проверить другие переменные STATUS

Существуют и другие полезные переменные в отношении соединений, а в вашем конкретном случае переменная 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

    Количество потоков, которые не спят.

Текущий статус соединений:

 mysqladmin status 

Посмотрите на Threads: count. Более подробную информацию о текущих соединениях можно получить с помощью команд:

 user@host:~$ mysqladmin -uroot -ppass extended-status | grep Threads | Threads_cached | 0 | | Threads_connected | 3 | | Threads_created | 3 | | Threads_running | 1 | user@host:~$ 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 .

Команды могут быть сокращены до любого уникального префикса и вызываться одновременно:

 user@host:~$ 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 

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

Я не думаю, что вы можете видеть количество соединений, но можете ограничить подключения к серверу mysql.