在LAMP生产服务器上我偶尔会从MYSQL收到“太多连接”错误,我想添加监控以查找原因是否超出了最大连接数限制。
我的问题:如何从mysql或mysqladmin查询当前使用的连接数? (我注意到show status给出了总连接而不是当前使用的连接。)
答案 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使用的内容......