如何查看有多少MySQL连接打开?

Sah*_*hal 39 php mysql apache

如何mysql_connect在Apache上运行的PHP中查看当前请求期间打开了多少个连接?

我知道如果我mysql_connect使用相同的参数调用函数100次,它将始终返回相同的连接链接.一旦连接已存在,它将不会启动新连接.

但我只想确保mysql_connect不开始新的.

我正在使用包含许多mysql_connect函数调用的遗留系统.

Apache中是否有任何设置或者有什么办法可以在Apache或MySQL日志文件中记录这个数量的连接?

Abh*_*hay 54

我认为有两种方法:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'
Run Code Online (Sandbox Code Playgroud)

或者您可以SHOW PROCESSLISTId列中找到唯一值.在旧的PHP API中mysql,也有mysql_list_processes相同的功能SHOW PROCESSLIST.

但第一个应该适合你.也许您可能想查看其他STATUS变量


Kam*_*zic 34

关于连接还有其他有用的变量,在您的特定情况下,变量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    |
+-------------------+-------+
Run Code Online (Sandbox Code Playgroud)
  • 连接

    MySQL服务器的连接尝试次数(成功与否).

  • Threads_cached

    线程缓存中的线程数.

  • threads_connected的

    当前打开的连接数.

  • 由Threads_created

    为处理连接而创建的线程数.如果Threads_created很大,您可能希望增加thread_cache_size值.高速缓存未命中率可以计算为Threads_created/Connections.

  • Threads_running

    未休眠的线程数.


Ale*_*ruk 10

当前连接状态:

mysqladmin status
Run Code Online (Sandbox Code Playgroud)

看看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 |
+----+------+-----------+----+---------+------+-------+------------------+
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


gmh*_*mhk 5

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