如何查看有多少 MySQL 连接处于打开状态?

2022-08-30 10:50:11

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

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

但我只是想确保不会开始一个新的。mysql_connect

我正在使用一个包含许多函数调用的旧系统。mysql_connect

Apache中是否有任何设置,或者是否有任何方法可以在Apache或MySQL日志文件中记录此数量的连接?


答案 1

我认为有几种方法:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

或者,您可以执行“显示进程列表”并在列中查找唯一值。在旧的PHP API中,有mysql_list_processes函数也执行与 相同的操作。IdmysqlSHOW PROCESSLIST

但第一个应该为你工作。也许您可能想检查其他 STATUS 变量


答案 2

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

  • Threads_running

    未进入休眠状态的线程数。


推荐