如何通过运行在Apache上的PHP中的mysql_connect查看当前请求期间打开了多少连接?我知道如果我用相同的参数调用mysql_connect函数100次,它总是会返回相同的连接链接,一旦连接已经存在,它就不会启动新的连接。但我只是想确保mysql_connect不是在开始一个新的。我正在使用一个包含许多mysql_connect函数调用的遗留系统。Apache中是否有任何设置,或者是否有任何方法可以在Apache或MySQL日志文件中记录此连接数?
mysql_connect
hzbexzde1#
我认为有两种方法:
SHOW STATUS WHERE `variable_name` = 'Threads_connected'
或者您可以执行SHOW PROCESSLIST并找出Id列中的唯一值。在旧的PHP API mysql中,有一个mysql_list_processes函数也可以执行与SHOW PROCESSLIST相同的操作。但是第一个应该对你有用。也许你想看看其他的STATUS variables
SHOW PROCESSLIST
Id
mysql
mysql_list_processes
e7arh2l62#
还有其他一些关于连接的有用变量,在你的特定情况下,变量Connections可能会帮助你发现你的代码是否建立了太多的连接。
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_created很大,则可能需要增加thread_cache_size值。该高速缓存未命中率的计算公式为Threads_created/Connections。
*执行中的执行绪
未处于休眠状态的线程数。
lstz6jyr3#
当前连接状态:
mysqladmin status
查看Threads: count。有关当前连接的更多详细信息可以通过以下命令获得:
Threads:
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 | +----+------+-----------+----+---------+------+-------+------------------+
仅供参考mysqladmin -v -uroot -ppass processlist与show full processlist类似。
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
x7rlezfr4#
您可以使用MySQL命令show processlist来获取连接数。
wmomyfyw5#
我不认为你可以看到连接的数量,但可以限制连接到mysql服务器。
5条答案
按热度按时间hzbexzde1#
我认为有两种方法:
或者您可以执行
SHOW PROCESSLIST
并找出Id
列中的唯一值。在旧的PHP APImysql
中,有一个mysql_list_processes
函数也可以执行与SHOW PROCESSLIST
相同的操作。但是第一个应该对你有用。也许你想看看其他的STATUS variables
e7arh2l62#
还有其他一些关于连接的有用变量,在你的特定情况下,变量
Connections
可能会帮助你发现你的代码是否建立了太多的连接。*连接
尝试连接MySQL服务器的次数(成功或失败)。
*快取的执行绪
执行绪快取中的执行绪数目。
*已连接的线程数
当前打开的连接数。
*创建的线程数
为处理连接而创建的线程数。如果Threads_created很大,则可能需要增加thread_cache_size值。该高速缓存未命中率的计算公式为Threads_created/Connections。
*执行中的执行绪
未处于休眠状态的线程数。
lstz6jyr3#
当前连接状态:
查看
Threads:
count。有关当前连接的更多详细信息可以通过以下命令获得:仅供参考
mysqladmin -v -uroot -ppass processlist
与show full processlist
类似。命令可以缩短为任何唯一的前缀,并同时调用:
x7rlezfr4#
您可以使用MySQL命令show processlist来获取连接数。
wmomyfyw5#
我不认为你可以看到连接的数量,但可以限制连接到mysql服务器。