繁体   English   中英

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

[英]How can I see how many MySQL connections are open?

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

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

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

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

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

我认为有几种方法:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

或者您可以执行SHOW PROCESSLIST并在Id列中找出唯一值。 In old PHP API mysql , there is mysql_list_processes function that does the same as SHOW PROCESSLIST , too.

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

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

  • 线程运行

    未休眠的线程数。

当前连接状态:

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 服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM