终止共享主机上的MySQL连接?

时间:2008-09-16 03:25:38

标签: sql mysql database connection

我正在使用MediaTemple的网格服务器(共享/网格托管)来运行我正在编写的一些MySQL / PHP网站,并注意到我没有关闭我的一个MySQL连接,这导致我的网站出错:< / p>

"Too Many Connections"

我无法在任何地方登录以手动关闭连接。

是否可以使用脚本或其他类型的命令关闭打开的连接?

我应该等一下吗?

5 个答案:

答案 0 :(得分:1)

如果您根本无法登录MySQL,则可能需要联系您的托管服务提供商以终止连接。

如果可以使用MySQL shell,可以使用show processlist命令查看连接,然后使用kill命令删除连接。

根据我的经验,不幸的是,挂起的SQL连接往往会保持这种状态。

答案 1 :(得分:1)

盲目进入终止连接并不是解决这个问题的方法。首先,您需要了解为什么连接不足。是否选择了max_connections设置以正确匹配最大/预期用户数?你真的不需要持久连接吗?等

答案 2 :(得分:0)

确保使用PHP代码关闭连接。此外,您可以增加/etc/my.cnf中允许的最大连接数。

max_connections=500

最后,您可以登录mysql提示并输入show statusshow processlist以查看服务器的各种统计信息。

如果所有其他方法都失败了,重新启动服务器守护程序应清除持久连接。

答案 3 :(得分:0)

好吧,如果你不能偷偷进入连接,我就不知道了,但是如果你偶尔可以偷偷溜进去,那么它将会接近:

require 'mysql'

mysql = Mysql.new(ip, user, pass)
processlist = mysql.query("show full processlist")
killed = 0
processlist.each { | process |
  mysql.query("KILL #{process[0].to_i}")
} 
puts "#{Time.new} -- killed: #{killed} connections"

答案 4 :(得分:0)

如果您可以使用足够的权限访问命令行,请重新启动MySQL服务器或Apache(假设您使用Apache)服务器 - 因为可能是保持连接打开。在您成功关闭连接之后,请确保您没有使用来自PHP的持久连接(一般意见似乎它不会产生任何显着的性能提升,但它有各种各样的问题 - 就像您经历过的那样 - 在某些情况下 - 比如使用它PostgreSQL - 它甚至可以显着减慢你的网站!)。