监视mysql上使用的连接以调试“太多连接”

时间:2010-03-16 09:51:34

标签: mysql

在LAMP生产服务器上我偶尔会从MYSQL收到“太多连接”错误,我想添加监控以查找原因是否超出了最大连接数限制。

我的问题:如何从mysql或mysqladmin查询当前使用的连接数? (我注意到show status给出了总连接而不是当前使用的连接。)

5 个答案:

答案 0 :(得分:17)

监控MySQL的一个非常强大的工具是innotop。你可以在这里找到它:

https://github.com/innotop/innotop

在Debian Lenny中,它是mysql-client-5.0软件包的一部分,我猜它也适用于其他发行版。它在监控InnoDB内部功能方面特别强大,但也提供对服务器的一般监控。

在“变量和状态”模式下,它监视变量“Connections”和“Max_used_Connections”(以及其他)。它显示绝对值和增量值 - 后者可能会让您了解当前连接。

由于innotop提供了非交互模式,因此您可以通过从一些自定义脚本,nagios检查或您拥有的任何系统调用innotop轻松构建完全自动化的监视。

答案 1 :(得分:4)

要获取MySQL允许的并发连接总数,您应该检查

show variables like 'max_connections'

目前正在使用的并发连接数量可以通过

来衡量

show status like 'max_used_connections'

您应该监控这些变量。如果您需要一个监视重要MySQL指标的商业工具,您可以尝试使用MySQL Enterprise Monitor,MONyog等。

答案 2 :(得分:3)

http://www.mail-archive.com/monit-general@nongnu.org/msg00830.html

看看这里的伙伴 - 可能会有所帮助。

答案 3 :(得分:2)

SHOW STATUS不显示总连接数:它显示当前连接数。当打开的连接数(空闲或不空闲)超过为服务器建立的限制时,您会收到太多连接错误消息。

根据您对SHOW STATUS的评论,我看起来您的服务器中有许多空闲连接。这表明滥用持久连接;一些声称支持持久连接的库无法正确处理它们,即使有空闲连接,它们也倾向于打开新连接。

找出运行此类查询的应用程序,并将其配置为不使用持久连接。

答案 4 :(得分:1)

您可能更容易获得MySQL Admin,从中可以轻松监控所使用的连接的来源。请参阅此处有关connections使用的内容......