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