apache 如何查看打开了多少个MySQL连接?

brvekthn  于 2022-11-16  发布在  Apache
关注(0)|答案(5)|浏览(130)

如何通过运行在Apache上的PHP中的mysql_connect查看当前请求期间打开了多少连接?
我知道如果我用相同的参数调用mysql_connect函数100次,它总是会返回相同的连接链接,一旦连接已经存在,它就不会启动新的连接。
但我只是想确保mysql_connect不是在开始一个新的。
我正在使用一个包含许多mysql_connect函数调用的遗留系统。
Apache中是否有任何设置,或者是否有任何方法可以在Apache或MySQL日志文件中记录此连接数?

hzbexzde

hzbexzde1#

我认为有两种方法:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

或者您可以执行SHOW PROCESSLIST并找出Id列中的唯一值。在旧的PHP API mysql中,有一个mysql_list_processes函数也可以执行与SHOW PROCESSLIST相同的操作。
但是第一个应该对你有用。也许你想看看其他的STATUS variables

e7arh2l6

e7arh2l62#

还有其他一些关于连接的有用变量,在你的特定情况下,变量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。

*执行中的执行绪

未处于休眠状态的线程数。

lstz6jyr

lstz6jyr3#

当前连接状态:

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 |
+----+------+-----------+----+---------+------+-------+------------------+

仅供参考mysqladmin -v -uroot -ppass processlistshow 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
x7rlezfr

x7rlezfr4#

您可以使用MySQL命令show processlist来获取连接数。

wmomyfyw

wmomyfyw5#

我不认为你可以看到连接的数量,但可以限制连接到mysql服务器。

相关问题