我怎样才能看到有多lessMySQL连接打开?
如何通过在Apache上运行的PHP中的mysql_connect
来查看在当前请求期间打开了多less个连接?
我知道,如果我用相同的参数调用mysql_connect
函数100次,它将始终返回相同的连接链接。 一旦连接已经存在,它将不会启动新的连接。
但我只是想确保mysql_connect
没有启动一个新的。
我正在使用一个包含许多mysql_connect
函数调用的遗留系统。
有没有在Apache的任何设置,或者有什么办法我可以在Apache或MySQL日志文件中logging这个连接数量?
我认为有几种方法:
SHOW STATUS WHERE `variable_name` = 'Threads_connected'
或者您可以做一个SHOW PROCESSLIST
并在Id
列中find唯一的值。 在旧的PHP API mysql
,有与SHOW PROCESSLIST
一样的mysql_list_processes
函数。
但是第一个应该为你工作。 也许你可能想检查其他的状态variables
还有其他有用的variables有关连接,并在您的特定情况下variablesConnections
可能会帮助找出您的代码是否连接太多。 运行代码之前和之后只需检查它的值。
# 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
线程caching中的线程数。
-
threads_connected的
当前打开的连接数量。
-
由Threads_created
为处理连接而创build的线程数。 如果Threads_created很大,则可能需要增加thread_cache_size的值。 高速caching未命中率可以计算为Threads_created / Connections。
-
Threads_running
未睡眠的线程数。
当前连接状态:
mysqladmin status
看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
模拟。
命令可以缩写为任何唯一的前缀,并同时调用:
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命令show processlist来获取连接数。
我不认为你可以看到连接的数量,但可以限制连接到MySQL服务器。