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

新手上路,请多包涵

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

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

但我只是想确保 mysql_connect 没有开始一个新的。

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

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

原文由 Sahal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 914
2 个回答

我认为有几种方法:

 SHOW STATUS WHERE `variable_name` = 'Threads_connected'

或者您可以执行 SHOW PROCESSLIST 并在 Id 列中找出唯一值。在旧的 PHP API mysql 中,也有 mysql_list_processes 功能与 SHOW PROCESSLIST 相同。

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

原文由 Abhay 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

当前打开的连接数。

  • Threads_created

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

  • 线程运行

未休眠的线程数。

原文由 Kamil Dziedzic 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题